python中定義類
python定義一個類時,有時候需要(object),有時沒有,那麽問題來了,什麽時候需要,什麽時候不需要的。
如下:
# -.- coding:utf-8 -.-
# __author__ = ‘zhengtong‘
class Person:
"""
不帶object
"""
name = "lihau"
class Animal(object):
"""
帶有object
"""
name = "jiaojiao"
if __name__ == "__main__":
x = Person()
print "Person", dir(x)
y = Animal()
print "Animal", dir(y)
運行結果如下:
Person [‘__doc__‘, ‘__module__‘, ‘name‘]
Animal [‘__class__‘, ‘__delattr__‘, ‘__dict__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘,
‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__le__‘, ‘__lt__‘, ‘__module__‘,
‘__ne__‘, ‘__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)。
python中定義類