Python中的魔術方法——new和init的方法執行順序


在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__對象在程序運行結束后,進行對象銷毀的時候調用這個方法,來釋放資源。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM