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.