Methode Resolution Order (MRO) in lessen nieuwe stijl?

| | | | | |

In het boek Python in een notendop (2e editie) staat een voorbeeld dat
klassen in oude stijl gebruikt om te demonstreren hoe methoden worden opgelost in de klassieke volgorde van resolutie en
hoe het werkt anders met de nieuwe bestelling.

Ik heb hetzelfde voorbeeld geprobeerd door het voorbeeld in nieuwe stijl te herschrijven, maar het resultaat is niet anders dan wat werd verkregen met klassen in oude stijl. De python-versie die ik gebruik om het voorbeeld uit te voeren is 2.5.2. Hieronder staat het voorbeeld:

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 instance = Derived() instance.amethod() print Derived.__mro__ 

De aanroep instance.amethod() drukt Base1 af, maar volgens mijn begrip van de MRO met nieuwe klassenstijl de uitvoer had Base3 moeten zijn. De aanroep Derived.__mro__ drukt af:

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

Ik weet niet zeker of mijn begrip van MRO met nieuwe stijlklassen onjuist is of dat ik een domme fout maak die ik niet kan ontdekken. Help me alstublieft om MRO beter te begrijpen.