Python2.7版本:定義類時為什么要繼承object類?


********此答案摘自知乎,且經過自己實際運行后得出********

繼承 object 類的是新式類,不繼承 object 類的是經典類

例子:

新式類:

 

 

經典類:

 

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 類


摘自:
https://www.zhihu.com/question/19754936/answer/202650790


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM