python的class(類)中的object是什麼意思?
阿新 • • 發佈:2019-01-26
python程式類的寫法中有的直接在class後價格名稱,有的卻在識別符號後加一個括號,裡面再嫁一個object,這是什麼意思呢?如下圖
原來
object是繼承的意思,面嚮物件語言中都有這樣一種特性。繼承,指一個物件直接使用另一物件的屬性和方法。
用程式碼說明寫object和不寫object有什麼區別?
# -.- coding:utf-8 -.- # __author__ = 'zhengtong' class Person: """ 不帶object """ name = "zhengtong" class Animal(object): """ 帶有object """ name = "chonghong" if __name__ == "__main__": x = Person() print "Person", dir(x) y = Animal() print "Animal", dir(y)
執行結果
Person ['__doc__', '__module__', 'name'] Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']
Person類很明顯能夠看出區別,不繼承object物件,只擁有了__doc__ , module 和 自己定義的name變數, 也就是說這個類的名稱空間只有三個物件可以操作.
Animal類繼承了object物件,擁有了好多可操作物件,這些都是類中的高階特性。
對於不太瞭解python類的同學來說,這些高階特性基本上沒用處,但是對於那些要著手寫框架或者寫大型專案的高手來說,這些特性就比較有用了,比如說tornado裡面的異常捕獲時就有用到__class__來定位類的名稱,還有高度靈活傳引數的時候用到__dict__來完成.
最後需要說清楚的一點, 本文是基於python 2.7.10版本,實際上在python 3 中已經預設就幫你載入了object了(即便你沒有寫上object)。