繼承 object 類的是新式類,不繼承 object 類的是經典類,在 Python 2.7 里面新式類和經典類在多繼承方面會有差異:
class A: def foo(self): print('called A.foo()') class B(A): pass class C(A): def foo(self): print('called C.foo()') class D(B, C): pass if __name__ == '__main__': d = D() d.foo()
結果:called C.foo()
B、C 是 A 的子類,D 多繼承了 B、C 兩個類,其中 C 重寫了 A 中的 foo() 方法。
因為 D 是直接繼承 C 的,從邏輯上說,執行 C 中的 foo() 更加合理,因此新式類對多繼承的處理更為合乎邏輯。
鏈接:https://www.zhihu.com/question/19754936/answer/202650790
