[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를 따로 호출시켜줘야한다.