자식 클래스의 객체를 생성하는 과정을 잠깐 생각해봅시다. 자식 클래스 객체의 인스턴스 변수들은 자식 클래스의 생성자에서 정의되고 초기화됩니다.
그렇다면 부모 클래스에 속하는 인스턴스 변수들은 어디에서 정의되고 초기화되어야 할까요?
부모 클래스의 인스턴스 변수들은 부모 클래스가 책임져야 합니다. 변수들의 정의와 초기화는 모두 생성자에서 이루어지기 때문에 부모 클래스의 생성자가 명시적으로 호출되어야 합니다.
자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자를 호출할 수 있습니다. 이 때 super()라는 함수가 사용됩니다.
부모 클래스의 생성자는 super().__init__() 와 같이 호출하면 됩니다.
class ChildClass(ParentClass):
def __init__(self):
super().__init__() # 부모 클래스의 생성자를 명시적으로 호출합니다.
...
아래 예제는 Truck 클래스의 생성자에서 부모 클래스 Vehicle의 생성자를 명시적으로 호출하는 예입니다.
만약 부모 클래스의 생성자가 인수를 요구한다면 필요한 인수를 제공하여야 합니다.
class Truck(ValueError):
def __init__(self, make, model, color, price, payload):
super().__init__(make, model, color, price) # Vehicle 클래스의 생성자를 명시적으로 호출합니다.
self.__payload = payload