새로운 스타일의 클래스에서 MRO(Method Resolution Order)?

| | | | | |

Python in a Nutshell (2nd Edition) 책에는
기존 스타일 클래스를 사용하여 메소드가 고전적인 해결 순서로 해결되는 방법과
어떻게 되는지 보여주는 예제가 있습니다. 새로운 주문과 다릅니다.

예제를 새로운 스타일로 다시 작성하여 동일한 예를 시도했지만 결과는 이전 스타일 클래스에서 얻은 것과 다르지 않습니다. 예제를 실행하는 데 사용하는 Python 버전은 2.5.2입니다. 아래는 예제입니다.

class Base1(object): def amethod(self): print "Base1" 클래스 Base2(Base1): 전달 클래스 Base3(객체): def amethod(self): 인쇄 "Base3" 클래스 Derived(Base2,Base3): 전달 인스턴스 = Derived() instance.amethod() print Derived.__mro__ 

instance.amethod() 호출은 Base1을 인쇄하지만 MRO에 대한 내 이해에 따라 새 스타일의 클래스 출력은 Base3이어야 합니다. Derived.__mro__ 호출은 다음을 인쇄합니다.

(<class "__main__.Derived">, <class "__main__.Base2">, <class "__main__.Base1">, <class "__main__.Base3">, <type "object">)

새로운 스타일 클래스가 올바르지 않거나 감지할 수 없는 어리석은 실수를 하고 있습니다. MRO를 더 잘 이해할 수 있도록 도와주세요.