オブジェクト指向の多重継承
1. __mro__ c3のアルゴリズムと説明 ( 1)__mro__ : Pythonのクラス多重継承機能、継承が最初のプロパティやメソッドを呼び出します見えにくい、複雑すぎる場合。 簡単かつ迅速に継承して順序を確認するためには、このクラスを呼び出すために取得する方法を__mro__することができます。 ( 2 )C3アルゴリズム SS A(オブジェクト): 合格 クラスB(A)を: 合格 クラスC(B)が: 合格 クラスD(オブジェクト): 合格 クラスE(D、C): 合格 クラスF.(オブジェクト): 合格 クラスG(F): パス クラスH(C、G): パス クラスはFoo(E、H): 合格 #の印刷(E .__ mro__) #1 印刷(H .__ mro__) "" " L(フー+ L(E)+ L(H)) L(E)= E、D、C、B、A、オブジェクト L(H )= H、C、B、A、G、F.、オブジェクト はFoo =(オブジェクト)+(G、F.、オブジェクト) はFoo、E、D、H、C、B、A、G、F.、オブジェクト "" " 印刷(フー・。__mro__ ) 2 クラシックと新しいクラス。 左右見つける最初見つける。 クラスA(オブジェクト): 渡し クラスB(オブジェクト): DEF F1(自己): 印刷(' B ' ) クラスC( 、B): 合格 OBJ =C() obj.f1() クラシックと新しいカテゴリB。 PY2: クラシック: 新しいクラス:彼らや彼らの前任者がいる限り、誰かがオブジェクトを継承しているとして、そのような新しいクラスであれば PY3: 新しいクラス クラシックと新しいクラスメンバーの配列が同じではない。見つける クラシック、一方向(深さ優先)へ。 新しいクラス、C3アルゴリズム(C3のpython2.3更新アルゴリズム) はFoo +(C、D、F G)+(G 、D、G、Wである)+ (I、G、D、Gは、W)は FOO、 比較第一ヘッダー及び他のエピトープを得ることは 離れて存在していない 存在する場合、放棄し、次いで第2のテーブルを取得しますヘッダは再びと比較することで、テーブルのもう一方の端を見て 、短答、 古典的な、(深さ優先)への一方通行 のルートを残す。(C3科学アルゴリズム)、新しいクラスを 注意: スーパー__mro__は、実行の順序に従うことです