development/Python

    [Python] MRO(Method Resolution Order)

    [Python] MRO(Method Resolution Order)

    이 글은 파이썬의 MRO 기능에 대해 공부하기 위해 레퍼런스를 참고해 정리한 글입니다. MRO(Method Resolution Order) 메서드 해결(결정) 순서라고 직역할 수 있겠다. MRO를 이해하기 전 먼저 파이썬은 다중 상속을 지원한다. 두 개의 부모 클래스(A,B)를 상속받은 자식 클래스(C)가 있다고 가정하자 A,B에 같은 이름의 메서드가 정의되어 있고 C에서 이 메서드를 호출하면 지옥의 다이아몬드라는 상속 문제가 발생한다. A와 B 중 어떤 클래스의 메서드를 실행해야 할 지 결정하지 못하는 것이다. 파이썬은 이 문제를 MRO로 해결한다. MRO는 자식과 부모 클래스를 전부 포함하여 메서드의 실행 순서를 정해두는 것이다. (메서드 탐색 순서로 이해해도 좋을 것 같다) MRO는 __mro__ ..