本Python in a 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
_ Base3
呼び出しは次のようDerived.__mro__
に表示されます。
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
新しいスタイル クラスを使用した MRO の理解が間違っているのか、それとも私が検出できないばかげた間違いを犯しているのか、私にはわかりません。MROをよりよく理解するのを手伝ってください。