In [ ]:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def has_right(self):
return True
상속 받을 경우 부모 클래스의 __init__ 메소드가 자동으로 실행됩니다.
In [ ]:
class Man(Person):
pass
In [ ]:
ricky = Man('ricky park', 'M')
In [ ]:
ricky.__class__
ricky는 Man과 Person의 객체입니다.
In [ ]:
isinstance(ricky, Man)
In [ ]:
isinstance(ricky, Person)
In [ ]:
ricky.gender
In [ ]:
ricky.has_right()
상위 클래스의 메소드를 오버라이딩 할 수 있습니다.
In [ ]:
class Woman(Person):
def __init__(self, name, gender, weight):
super(Woman, self).__init__(name, gender)
self.__weight = weight
def has_right(self):
return 1
def __get_weight(self):
return self.__weight
In [ ]:
jane = Woman('jane kim', 'F', 50)
In [ ]:
jane.has_right()
private 메소드로 표시하는 것은 이름을 변형(name mangling)시킬 뿐 외부에서 접근 가능합니다.
In [ ]:
jane.__get_weight()
In [ ]:
jane._Woman__get_weight()
In [ ]:
jane.gender
겹밑줄인 변수도 이름이 변형되지만 여전히 외부에서 접근이 가능합니다.
In [ ]:
jane.__weight
In [ ]:
jane._Woman__weight
In [ ]: