python類中幾個特殊方法
阿新 • • 發佈:2018-08-22
del 對象銷毀 python類 也會 __add__ self elf 對象 調用
class TT: def __init__(self): print "__init__" def __call__(self): print "__call__" def __str__(self): return "__str__" def __int__(self): return "__int__" def __add__(self,other): return "__add__" def __sub__(self,other):return "__sub__" def __mul__(self,other): return "__mul__" def __div__(self,other): return "__div__" def __del__(self): print "析構函數被調用"
在Python中,定義一個類TT如上,那麽
- 執行 obj = TT()方法,將自動調用TT中的 __init__ 方法
- 在執行obj() 或者TT()(),即類成員後加括號方式調用,則會自動調用 __call__ 方法
- 如果要將對象轉換為int類型,即ret = int(obj)則會自動調用類的 __int__ 方法,並將返回值賦值給左邊變量
- 同樣如果需要將對象轉換為str類型,即ret = str(obj)則會自動調用類的 __str__方法,並將返回值賦值給左邊變量
- 調用print(obj)方法,等同於調用print(str(obj))方法,最終也會調用到類的 __str__方法
- 兩個對象相加時候,則會自動調用第一個對象的 __add__方法,並將第一個個對象當做參數傳入這個方法中,同理還有 __sub__、__mul__、__div__
- 析構函數,即__del__,在對象銷毀的時候自動調用
- obj.__dict__,會將obj對象中的成員以詞典方式展示出來;TT.__dict__會將類中的成員以詞典方式展示出來
如下所示:
obj = TT() # __init__ obj() # __call__ print(int(obj)) # __int__ print(str(obj)) # __str__ print(obj) # __str__ print(obj+50) # __add__ print(obj-50) # __sub__ print(obj*50) # __mul__ print(obj/50) # __div__ del obj # 析構函數被調用
python類中幾個特殊方法