私は複数のinherirtanceでメソッド解決順序を理解しようとしています。 ここで私が使用しているコードです。クラス 'ClassC'のオブジェクトを作成しようとすると、ClassAのコンストラクタだけが呼び出されます。この場合、メソッドはどのように解決されますか?Pythonの多重継承におけるメソッド解決
class ClassA:
def __init__(self):
print "inside a's init"
class ClassB:
def __init__(self):
print "inside b's init"
class ClassC(ClassA,ClassB):
pass
c = ClassC()
出力:
inside a's init
Python 2では新しいスタイルのクラス、例えば 'class ClassA(object):'(Python 3ではすべてのクラスが新しいスタイルです)を使うべきです。そして 'ClassA'の' .__ init__'メソッドに 'super(ClassA、self).__ init __()'を追加します。 (同様の呼び出しを 'ClassB'に追加することもできますが、' ClassB'は 'ClassC'の継承連鎖の終わりなので、不要です。リンクされた質問の中のPythonコア開発者Raymond Hettingerの答えが完全にあなたの質問に答えることができない場合は、私に教えてください。 –
これは役に立ちました@ PM2Ring。ありがとう – Heisenberg