在python中內置好的特定方法,名稱為‘__xx__’,在進行特定的操作時會被自動調用,這些方法稱為魔術方法。
(1)__init__初始化一個類,在創建實例的對象時候,為其賦值時候使用。
(2)__str__將對象轉換為字符串,測試的時候,打印對象的信息。
輸出的結果是一串類似id的地址信息。
在類中定義__str__方法,里面返回要輸出的數據內容:
class:
.....
def __str__(self):
return '我的名字是%s,我的顏色是%s'%(self.name,self.coloer)
然后在使用的時候直接打印對象名字printf(dog(對象名))
輸出的就是return的信息,如果類中不加str,那么打印的就是對象的地址。
(3)__new__創建並且返回一個實例對象,調用一次就會得到一個對象。(經常用來做單例模式)
class:.....
def __new__(cls,*args,**kwargs): #創建對象實例的方法,每調用一次,就會生成一個新的對象。
cls就是class的縮寫。
print("......new....函數的執行")
return object.__new__(cls) 必須return。
類創建新的對象的時候首先執行的是__new__創建新的對象,經過return后才能被__init__使用,再執行init。
所以新的對象創建的過程:new object = class(x,x,x)-->__new__-->return object.__new__(cls)-->__init__
其中的cls表示在當前的類下,cls就是代表這個類。
現有對象(new創建),對象返回后再執行init方法。
new應用場景:可以控制創建對象的一些屬性限定,經常用來作單例模式的時候使用。
__new__和__init__的區別:
__new__是類的實例化方法,必須要返回該實例,否則對象創建不成功。
__init__是用來做實例對象的數據初始化的工作,也可以認為是實例的構造方法,接受類的實例self
並對其進行構造。
new執行是優先於init的。
__new__至少有一個參數是cls,代表要是實例化的類。
__class__方法,獲得已知的對象的類 對象.__class__
__del__對象在程序運行結束后,進行對象銷毀的時候調用這個方法,來釋放資源。