반응형
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