Programming,  Python

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

Leave a Reply

Your email address will not be published. Required fields are marked *