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 yeni düzende nasıl farklı olduğunu göstermek için eski stil sınıflarını kullanan bir örnek var .
Örneği yeni üslupta yeniden yazarak aynı örneği denedim ama sonuç eski tarz sınıflarla elde edilenden farklı değil. Örneği çalıştırmak için kullandığım python sürümü 2.5.2. Örnek aşağıdadır:
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__
Çağrı instance.amethod()
yazdırılır Base1
, ancak MRO ile ilgili yeni sınıf stillerini anladığıma göre çıktının olması gerekirdi Base3
. Çağrı Derived.__mro__
yazdırılır:
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
Yeni stil sınıfları ile MRO anlayışımın yanlış olup olmadığından ya da tespit edemediğim aptalca bir hata yaptığımdan emin değilim. Lütfen MRO'yu daha iyi anlamama yardımcı olun.