클래스는 Python의 둘 이상의 기본 클래스에서 파생될 수 있습니다. 이것을 다중 상속이라고 합니다.
다중 상속에서는 모든 기본 클래스의 기능이 파생 클래스로 상속됩니다. 다중 상속 구문은 단일 상속과 유사합니다.
class Super1: pass class Super2: pass class MultiDerived(Super1, Super2): pass
다중 상속 시나리오에서는 지정된 속성이 현재 클래스에서 먼저 검색됩니다. 찾지 못하면 같은 클래스를 두 번 검색하지 않고 깊이 우선, 왼쪽-오른쪽 방식으로 상위 클래스로 검색을 계속합니다.
따라서 위의 MultiDerived 클래스 예에서 검색 순서는 [MultiDerived, Super1, Super2, object]입니다. 이 순서를 MultiDerived 클래스의 선형화라고도 하며 이 순서를 찾는 데 사용되는 규칙 집합을 MRO(Method Resolution Order)라고 합니다.
MRO는 클래스가 항상 부모보다 먼저 나타나도록 하며 여러 부모의 경우 순서는 기본 클래스의 튜플과 동일합니다.
클래스의 MRO는 __mro__ 속성 또는 mro() 메서드로 볼 수 있습니다. 전자는 튜플을 반환하고 후자는 목록을 반환합니다.
>>> MultiDerived.mro() [<class '__main__.MultiDerived'>, <class '__main__.Super1'>, <class '__main__.Super2'>, <class 'object'>]