python學習之新式類和舊式類講解
object
object 是 Python 為所有對象提供的父類,默認提供一些內置的屬性、方法;可以使用 dir 方法查看
新式類
以 object 為父類的類,推薦使用在 Python 3.x 中定義類時,如果沒有指定父類,會默認使用 object 作為該類的父類所以 Python 3.x 中定義的類都是新式類
舊式類
不以 object 為父類的類,不推薦使用在 Python 2.x 中定義類,如果沒有指定父類,不會使用 object 作為基類
新式類和舊式類的區別
在多繼承時,會影響到方法搜索順序 MOR
重點
為瞭保證編寫的代碼能夠同時在 Python2.x 和 Python 3.x 中運行建議在定義類時,如果沒有父類,也統一繼承 object
class 類名(object): pass
Python 2.x 中聲明類
舊式類
沒有繼承 object 類,隻有兩個屬性、方法舊式類會使用舊的 MRO 算法,多繼承場景下,方法搜索順序會有問題MRO 詳解:Python學習之MRO方法搜索順序
新式類
手動繼承 object 類,擁有 object 類的屬性、方法
Python 3.x 中聲明類
默認就是新式類
class A: pass a = A() print(dir(a))
# 輸出結果
[‘__class__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__le__’, ‘__lt__’, ‘__module__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘__weakref__’]
自動繼承 object 類,擁有 object 類的屬性、方法
到此這篇關於python學習之新式類和舊式類講解的文章就介紹到這瞭,更多相關python 新式類和舊式類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!