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'