37. Python에서의 상속과 다형성 – super 키워드로 기반 형식 멤버 접근

안녕하세요. 언제나 휴일, 언휴예요.

이전 강의에서 기반 형식 생성자가 입력 인자가 있을 때 파생 형식 생성자에서 기반 형식 이름을 통해 기반 형식의 생성자를 호출하는 것을 살펴보았어요.

그런데 파생 형식에서 기반 형식의 멤버를 사용할 때 super 키워드를 사용할 수 있어요. 이전 강의에서 다루었던 기반 형식 생성자가 입력 인자가 있을 때도 기반 형식 이름 대신 super 키워드를 사용할 수 있어요. 대신 self는 입력 인자로 전달하지 않아요. 또한 무효화 상태의 기반 형식 멤버 메서드를 호출할 때 super 키워드를 사용할 수 있어요.

#super 키워드

class Musician:
    def __init__(self,name):
        self.__name = name
        print(name + " 음악가 생성")

    def GetName(self):
        return self.__name

    def Play(self):
        print(self.__name + "음악가, 랄라라~")

class Pianist(Musician):
    def __init__(self,name):
        # Musician.__init__(self,name)
        super().__init__(name) #기반 형식 이름 대신 super() 사용, self 생략
        print(name+" 피아니스트")

    def Play(self):
        super().Play() #무효화 상태의 기반 형식 멤버 메서드 호출
        print(self.GetName() +", 딩동댕")

    def Tuning(self):
        print("도도 레레 미미")

class Drummer(Musician):
    def __init__(self,name):
        Musician.__init__(self,name)

    def TurnStick(self):
        print("휘리릭~ 휘릭~")

band = list()
band.append(Pianist("홍길동"))
band.append(Drummer("강감찬"))
for musician in band:
    musician.Play()
[그림 1] super 키워드 사용
[그림 1] super 키워드 사용