1. 程式人生 > >python的class(類)中的object是什麼意思?

python的class(類)中的object是什麼意思?

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)。