タグ付けされた質問 「method-resolution-order」


4
新しいスタイルのクラスのメソッド解決順序(MRO)?
『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の理解を深めてください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.