[Python] Override
Class에서 부모 class와 자식 class의 function 이름이 같을 경우 자식 class’s function을 call 할 때 부모 class function이 가려지고 자식 class function이 호출된다.
class A: def spam(self): print('A.spam') class B(A): def spam(self): print('B.spam') super().spam() if __name__ == '__main__': b = B() b.spam()
B.spam A.spam |
Constructor 또한 일반 함수처럼 override 된다.
class A: def __init__(self): print("A.__init__()") self.x = 0 class B(A): def __init__(self): print("B.__init__()") #super().__init__() self.y = 1 if __name__ == '__main__': b = B() print(b.y)
B.__init__() 1 |
C++의 경우엔 자동으로 부모 class의 constructor를 호출하지만 Python은 그렇지 않다. 따라서 부모의 constructor를 따로 호출시켜줘야한다.