『Python in the Nutshell(2nd Edition)』には、
古いスタイルのクラスを使用して、メソッドが従来の解決順序で解決される方法
と、新しい順序でどのように異なるかを示す例があります。
同じスタイルの例を新しいスタイルで書き直してみましたが、結果は古いスタイルのクラスで得られたものと変わりません。この例を実行するために使用しているpythonのバージョンは2.5.2です。以下に例を示します。
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__
コール・instance.amethod()
プリントBase1
が、出力がされている必要がありますクラスの新しいスタイルとMROの私の理解あたりとして、Base3
。呼び出しはDerived.__mro__
印刷します:
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
新しいスタイルクラスを使用したMROの理解が間違っているのか、または検出できない愚かな間違いをしているのかわかりません。MROの理解を深めてください。