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 類,擁有 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 類的屬性、方法

 


免責聲明!

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



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