반응형
class Person:
def __init__(self, name, phone=None):
self.name = name
self.phone = phone
def __repr__(self):
return '<Person {} {}>'.format(self.name, self.phone)
class Employee(Person):
def __init__(self, name, phone, position, salary):
Person.__init__(self, name, phone)
self.position = position
self.salary = salary
class Employee2(Person):
def __init__(self, name, phone, position, salary):
super().__init__(name, phone)
self.position = position
self.salary = salary
def __repr__(self):
return '<Person {} {} {} {}>'.format(self.name, self.phone, self.position, self.salary)
m1 = Employee('손창희', 5565, '대리', 200)
print(m1) # 출력 : <Person 손창희 5565>
m2 = Employee2('손창희', 5565, '대리', 200)
print(m2) # 출력 : <Person 손창희 5565 대리 200>
Person이라는 클래스를 만들어줬습니다.
def __repr__(self):
return '<Person {} {}>'.format(self.name, self.phone)
__repr__ 이것의 기능은 print문으로 객체를 찍으면 출력되는 문장입니다.
여기에선 이름과 전화번호가 출력되겠네요
class Employee2(Person)
상속을 받으려면 self대신 상위 클래스를 괄호안에 적어주시면 됩니다.
생성자에 공통 부분은 Person.__init__(self, name, phone) 이런식으로 재활용이 가능합니다.
super().__init__(name, phone) 이것을 쓸 수도 있습니다.
class Person:
def __init__(self, name, phone=None):
self.name = name
self.phone = phone
def __repr__(self):
return '<Person {} {}>'.format(self.name, self.phone)
class Employee(Person):
def __init__(self, name, phone, position, salary):
super().__init__(name, phone)
self.position = position
self.salary = salary
def __repr__(self):
s = super().__repr__()
return s + '<Person {} {}>'.format(self.position, self.salary)
m1 = Employee('손창희', 5565, '대리', 200)
print(m1) # 출력 : <Person 손창희 5565><Person 대리 200>
이런식으로 s = super().__repr__() 와 같이 __repr__도 super() 사용이 가능합니다.
반응형
'파이썬 (추후 수정)' 카테고리의 다른 글
파이썬 추상클래스 (0) | 2021.07.20 |
---|---|
파이썬 다중상속 (0) | 2021.07.20 |
파이썬 클래스 (0) | 2021.07.20 |
파이썬 map, filter , lambda (0) | 2021.07.20 |
파이썬 Try except finally (0) | 2021.07.18 |