Python Web ページのドキュメントでは、python のクラシック クラスのメソッド解決順序は、左から右への深さ優先検索として説明されています。このコードでこれをテストしようとしました:
class A(object):
def __init__(self):
print "Initialized A"
class B(A):
def test():
print "Initialized B"
class C(A):
def __init__(self):
print "Initialized C"
class D(B, C):
def __init__(self):
super(D, self).__init__()
print "Initialized D"
オブジェクト D のインスタンスを作成すると:
D()
私は結果を得る:
Initialized C
Initialized D
MRO は深さ優先であるため、"Initialized A"、"Initialized D" の出力を期待していましたが、初期化は最初に B で検索されます。 B (つまり A) の基本クラスの関数。Aの代わりにCのinit-functionを取得する理由を説明してもらえますか?