Method Resolution Order (MRO) in Klassen neuen Stils?

| | | | | |

Im Buch Python in a Nutshell (2nd Edition) gibt es ein Beispiel, das
alte Klassen verwendet, um zu demonstrieren, wie Methoden in der klassischen Auflösungsreihenfolge aufgelöst werden und
wie es ist anders bei der neuen Bestellung.

Ich habe dasselbe Beispiel versucht, indem ich das Beispiel in einem neuen Stil umgeschrieben habe, aber das Ergebnis ist nicht anders als das, was mit Klassen im alten Stil erhalten wurde. Die Python-Version, die ich zum Ausführen des Beispiels verwende, ist 2.5.2. Unten ist das Beispiel:

class Base1(object): def amethod(self): print "Base1"-Klasse Base2(Base1): Klasse Base3(Objekt) übergeben: def amethod(self): print "Base3"-Klasse Derived(Base2,Base3): pass instance = Derived() instance.amethod() print Derived.__mro__ 

Der Aufruf instance.amethod() gibt Base1 aus, aber nach meinem Verständnis des MRO mit neuen Klassenstil sollte die Ausgabe Base3 sein. Der Aufruf Derived.__mro__ gibt Folgendes aus:

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

Ich bin mir nicht sicher, ob mein Verständnis von MRO neu ist style-Klassen falsch ist oder dass ich einen dummen Fehler mache, den ich nicht erkennen kann. Bitte helfen Sie mir, MRO besser zu verstehen.