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.