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