pythonの多重継承と属性検索の優先順位
クラシッククラスでは「下から上へ」が優先され、そのあとに「左から右へ」である。
新スタイルクラスでは「左から右へ」が優先され、そのあとに「下から上へ」となる。
新スタイルクラスはpython2.2から導入されたクラスであり
ビルトインオブジェクトを継承したクラスは新スタイルクラスとなる
# クラシッククラス class A(): attr='a' class B(A): pass class C(A): attr='c' class D(B,C): pass obj = D() obj.attr # => 'a' # 新スタイルクラス class A(object): attr='a' class B(A): pass class C(A): attr='c' class D(B,C): pass obj = D() obj.attr # => 'c'