python 中 class 碱基的顺序重要吗?

Does order of class bases in python matter?

下面的两个 类 有(有意义的)区别吗?

class A(Foo, Bar):
    ...

class B(Bar, Foo):
    ...

Does order of class bases in python matter?

是的,确实如此。考虑以下因素:

class A:
    def foo(self):
        print('class A')
class B:
    def foo(self):
        print('class B')
class C(A, B):
    pass

c = C()
c.foo() # class A

方法是从 left-to-right 解析的——例如,在示例中,foo 方法来自 class A,因为 A 在 B 之前。