더북(TheBook)

 

55 super( )

 

 

<강의보기> 05:43

이번 시간에는 메서드를 오버라이드할 때 부모의 동작을 불러오는 방법을 알아보겠습니다.

가끔은 자식 클래스에서 동작을 덮어쓰는(override) 것만으로는 충분하지 않을 때가 있습니다. 부모의 동작은 그대로 하면서 새로운 동작을 조금 끼워 넣고 싶을 때가 있기 때문입니다. 예를 들어, 54강에서 살펴본 Animal 클래스의 greet() 메서드는 단순히 인사한다, Human 클래스의 greet() 메서드는 손을 흔든다를 출력했습니다. 만약 인사한다는 그대로 두고, 그 앞에 손을 흔들면서를 추가하고 싶으면 어떻게 해야 할까요?

지금부터 Human 클래스의 greet() 메서드를 호출하면 손을 흔들면서 인사한다를 출력하도록 바꿔 보겠습니다. 54강에서 만든 파일을 그대로 가져온 다음 파일 이름을 override_super.py로 저장하고 코드를 다음과 같이 수정합니다.

 

코드 override_super.py

class Animal():
    '''동물'''
    def walk(self):
        print('걷는다')
    
    def eat(self):
        print('먹는다')
    
    def greet(self):
        print('인사한다')

class Human(Animal):
    '''인간'''
    def wave(self):
        print('손을 흔들면서') 
     
    def greet(self):
        self.wave()            
        super().greet()        
 
person = Human()
person.greet()

 

실행 결과

손을 흔들면서

인사한다

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.