Python은 C3 선형화로 한 줄의 탐색 순서를 만든다
다중 상속에서도 메서드를 찾는 순서는 모호하지 않아. 클래스 자신이 부모보다 먼저, 부모는 선언된 순서를 지키며, 같은 조상은 한 번만 나타나는 MRO를 만들어. 이 조건을 함께 만족할 수 없으면 클래스 정의를 거부해.
super는 부모 이름이 아니라 다음 MRO를 부른다
다이아몬드 구조에서 모든 클래스가 super()로 협력하면 공통 조상도 한 번만 호출돼. 각 메서드는 자신이 쓸 인자를 꺼내고 남은 인자를 넘기며, 체인을 중간에서 끊지 않아야 해.
원칙: 다중 상속을 쓴다면 모든 참여 클래스가 같은 호출 계약으로 협력해야 해. 한 클래스라도 부모를 직접 부르면 MRO의 보장이 깨져.