Method Resolution Order (MRO) w klasach nowego stylu?

| | | | | |

W książce Python w pigułce (wydanie drugie) znajduje się przykład, który wykorzystuje
klasy w starym stylu, aby zademonstrować, jak metody są rozwiązywane w klasycznej kolejności rozwiązywania i
jak to jest inaczej z nowym zamówieniem.

Próbowałem tego samego przykładu, przepisując go w nowym stylu, ale wynik nie różni się od tego, który uzyskano z klasami w starym stylu. Wersja Pythona, której używam do uruchomienia przykładu, to 2.5.2. Poniżej znajduje się przykład:

class Base1(object): def amethod(self): print "Base1" class Base2(Base1): pass class Base3(object): def amethod(self): print "Base3" class Derived(Base2,Base3): pass instancja = Derived() instance.amethod() print Derived.__mro__ 

Wywołanie instance.amethod() wyświetla Base1, ale zgodnie z moim rozumieniem MRO z nowy styl klas wynik powinien być Base3. Wywołanie Derived.__mro__ wyświetla:

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

Nie jestem pewien, czy moje zrozumienie MRO z nowym zajęcia stylu są niepoprawne lub popełniam głupi błąd, którego nie jestem w stanie wykryć. Pomóż mi lepiej zrozumieć MRO.