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.