더북(TheBook)

클래스에서도 이름을 직접 적지 않고도 부모 클래스에 접근하는 방법이 있습니다. 바로 이번에 배울 super()입니다. super()는 상속하는 부모 클래스의 메서드를 사용할 때 필요합니다.

앞의 코드를 다음과 같이 수정하면 동일한 동작을 수행합니다. 단, super()를 사용하는 문장에서는 self를 함께 사용하지 않으니 이 점을 주의해야 합니다.

class BuildingUnit(Unit):
    def __init__(self, name, hp, location):
        # Unit.__init__(self, name, hp, 0) # 지상 이동 속도 0, 건물은 지상 이동 불가
        super().__init__(name, hp, 0) # 부모 클래스 접근, self 없이 사용
        self.location = location

하지만 부모 클래스를 2개 이상 상속하는 다중 상속일 때는 어떨까요? 비교해 보기 위해 새로운 파이썬 파일(super.py)을 하나 만들어서 다음과 같이 코드를 작성합니다.

super.py

class Unit:
    def __init__(self):
        print("Unit 생성자")

class Flyable:
    def __init__(self):
        print("Flyable 생성자")

class FlyableUnit(Unit, Flyable):
    def __init__(self):
        super().__init__()

# 수송선
troopship = FlyableUnit()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.