python中__new__()與__init__()的區別


1.首先用法不同

  __new__()用於創建實例,所以該方法是在實例創建之前被調用,它是類級別的方法,是個靜態方法;

   __init__() 用於初始化實例,所以該方法是在實例對象創建后被調用,它是實例級別的方法,用於設置對象屬性的一些初始值。

  由此可知,__new__()在__init__() 之前被調用。如果__new__() 創建的是當前類的實例,會自動調用__init__()函數,通過return調用的__new__()的參數cls來保證是當前類實例,如果是其他類的類名,那么創建返回的是其他類實例,就不會調用當前類的__init__()函數。


2.其次傳入參數不同:

  __new__()至少有一個參數cls,代表當前類,此參數在實例化時由Python解釋器自動識別;

  __init__()至少有一個參數self,就是這個__new__()返回的實例,__init__()在__new__()的基礎上完成一些初始化的操作。


 3.返回值不同:

  __new__()必須有返回值,返回實例對象;

  __init__()不需要返回值。
 ————————————————
版權聲明:本文為CSDN博主「Petrus_shuai」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/luan7liem/article/details/82534644


免責聲明!

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



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