Yeni stil sınıflarında Yöntem Çözünürlük Sırası (MRO)?

| | | | | |

Python in a Nutshell (2nd Edition) kitabında, yöntemlerin klasik çözünürlük sırasına göre nasıl çözüldüğünü ve
nasıl olduğunu göstermek için
eski stil sınıflarını kullanan bir örnek vardır. yeni düzen ile farklı.

Aynı örneği yeni stilde yeniden yazarak denedim ama sonuç eski stil sınıflarıyla elde edilenden farklı değil. Örneği çalıştırmak için kullandığım python sürümü 2.5.2. Aşağıda örnek verilmiştir:

class Base1(object): def amethod(self): print "Base1" sınıfı Base2(Base1): sınıf Base3(nesne): def amethod(self): print "Base3" class Derived(Base2,Base3): pass instance = Derived() instance.ametod() print Derived.__mro__ 

instance.ametod() çağrısı Base1 yazdırır, ancak MRO'dan anladığım kadarıyla yeni sınıf stili çıktının Base3 olması gerekirdi. Derived.__mro__ çağrısı şunu yazdırır:

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

MRO'yu yeni stil sınıfları yanlış veya tespit edemediğim aptalca bir hata yapıyorum. Lütfen MRO'yu daha iyi anlamama yardım edin.