[python] 다이아몬드 상속 현상
파이썬에서 다이아몬드 상속은 다중 상속으로 인해 발생하는 현상을 의미합니다. 다중 상속은 하나의 클래스가 둘 이상의 클래스를 상속받을 때 발생하는데, 이때 두 부모 클래스가 같은 조상 클래스를 갖고 있을 때 문제가 발생할 수 있습니다. 이를 다이아몬드 상속이라고 합니다.
다이아몬드 상속 예시
예를 들어, 다음과 같이 A
클래스가 B
와 C
를 상속받고, B
와 C
가 모두 D
를 상속받을 때 다이아몬드 상속 문제가 발생할 수 있습니다.
class A:
def method(self):
print("A method")
class B(A):
def method(self):
print("B method")
super().method()
class C(A):
def method(self):
print("C method")
super().method()
class D(B, C):
pass
이러한 구조에서 D
가 method
를 호출할 때 어떤 순서로 상속된 method
가 호출될지 모호해질 수 있습니다.
문제의 해결
파이썬은 이러한 다이아몬드 상속 문제를 해결하기 위해 메서드 결정 순서(Method Resolution Order, MRO)라는 것을 가지고 있습니다. MRO는 각 클래스별로 메서드를 탐색할 순서를 정의하는데, 이를 통해 모호함을 해결할 수 있습니다.
요약
다이아몬드 상속은 다중 상속으로 인해 발생하는 문제로, 파이썬은 MRO를 통해 이를 해결합니다. 다이아몬드 상속을 사용할 때는 MRO에 주의하여 정확한 상속 순서를 파악해야 합니다.