python所有的父类_object代表所有类的父类吗??
作者:鄒沖
鏈接:https://www.zhihu.com/question/19754936/answer/202650790
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
寫東西的時候剛好遇到這個問題,回答一波……
繼承 object 類的是新式類,不繼承 object 類的是經典類,在 Python 2.7 里面新式類和經典類在多繼承方面會有差異:
class A:
def foo(self):
print('called A.foo()')class B(A):
passclass C(A):
def foo(self):
print('called C.foo()')class D(B, C):
passif __name__ == '__main__':
d = D()
d.foo()
B、C 是 A 的子類,D 多繼承了 B、C 兩個類,其中 C 重寫了 A 中的 foo() 方法。
如果 A 是經典類(如上代碼),當調用 D 的實例的 foo() 方法時,Python 會按照深度優先的方法去搜索 foo() ,路徑是 B-A-C ,執行的是 A 中的 foo() ;
如果 A 是新式類,當調用 D 的實例的 foo() 方法時,Python 會按照廣度優先的方法去搜索 foo() ,路徑是 B-C-A ,執行的是 C 中的 foo() 。
因為 D 是直接繼承 C 的,從邏輯上說,執行 C 中的 foo() 更加合理,因此新式類對多繼承的處理更為合乎邏輯。
在 Python 3.x 中的新式類貌似已經兼容了經典類,無論 A 是否繼承 object 類, D 實例中的 foo() 都會執行 C 中的 foo() 。但是在 Python 2.7 中這種差異仍然存在,因此還是推薦使用新式類,要繼承 object 類。
總結
以上是生活随笔為你收集整理的python所有的父类_object代表所有类的父类吗??的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓不卡顿的手机(安卓不卡)
- 下一篇: python进行数据查询_如何进行pyt