1. 程式人生 > >python類中幾個特殊方法

python類中幾個特殊方法

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類中幾個特殊方法