기존 타입의 계약을 확장하고 재사용합니다.
상속은 하위 클래스가 상위 클래스의 메서드를 이어받고 일부 동작을 바꾸게 합니다. super는 현재 클래스 다음의 메서드 구현을 호출해 초기화와 협력 동작을 보존합니다.
Course는 Content를 상속하고 __init__에서 super().__init__(title)을 불러 title 설정을 부모에게 맡깁니다. describe 역시 super().describe()로 부모의 결과를 받은 뒤 강좌 수를 덧붙이므로 Python (56강)이 출력됩니다. 부모의 describe가 바뀌면 Course의 설명도 그대로 따라 바뀝니다.
하위 클래스는 상위 클래스 대신 사용해도 기대한 계약을 지켜야 합니다. 단지 코드 몇 줄을 재사용하려고 의미 없는 is-a 관계를 만들지 않습니다.
상속 계층은 얕게 유지하고 변경 가능한 기능 조합에는 구성이나 전략 객체를 우선 검토합니다.
부모 __init__ 호출을 빼면 부모가 보장하던 속성이 없어 나중 메서드에서 오류가 납니다.
직접 바꿔보세요VideoCourse에 duration_minutes를 추가하고 summary를 확장하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.