상속과 다형성
학습 목표
- 상속(Inheritance)으로 코드를 재사용할 수 있다
super()로 부모 클래스의 메서드를 호출할 수 있다- MRO(Method Resolution Order)를 이해한다
- 다형성(Polymorphism)을 활용하여 유연한 코드를 작성할 수 있다
왜 중요한가
ML 프레임워크는 상속 기반으로 설계되어 있습니다. PyTorch에서nn.Module을 상속하여 모델을 만들고, Dataset을 상속하여 데이터셋을 정의합니다. 상속과 다형성을 이해해야 프레임워크를 효과적으로 활용할 수 있습니다.
기본 상속
super() 함수
super()는 부모 클래스의 메서드를 호출합니다.
메서드 오버라이딩
다중 상속과 MRO
다형성 (Polymorphism)
다형성은 같은 인터페이스로 다른 동작을 수행하는 것입니다.AI/ML에서의 활용
다중 상속은 사용해도 되나요?
다중 상속은 사용해도 되나요?
Python은 다중 상속을 지원하지만, 복잡성이 크게 증가합니다. Mixin 패턴(작은 기능 단위의 클래스를 조합)으로 제한적으로 사용하는 것이 좋습니다. 대부분의 경우 단일 상속 + 조합(Composition)이 더 나은 설계입니다.
상속 vs 조합(Composition) 어떤 것이 좋나요?
상속 vs 조합(Composition) 어떤 것이 좋나요?
“is-a” 관계이면 상속, “has-a” 관계이면 조합을 사용합니다.
Dog is an Animal -> 상속, Car has an Engine -> 조합. 일반적으로 조합을 먼저 고려하세요.체크리스트
- 상속으로 부모 클래스의 기능을 재사용할 수 있다
-
super()로 부모 클래스의 메서드를 호출할 수 있다 - MRO의 개념과 검색 순서를 이해한다
- 다형성을 활용하여 유연한 코드를 작성할 수 있다

