說明python中的`__init__''和`__ new__'之間的區別。
在Python中,新的和初始化的目的和定時在對象創建過程中有所不同。 1。新控制對象創建,是一種靜態方法,返回實例,用於在實例化或使用不變類型之前修改值。 2。 InitControls初始化是一種實例方法,分配屬性,並且更常用於設置對象狀態。 3.自定義創建(例如,不可關係,單例)和初始化時,請使用新的使用,以在創建後設置初始值。
在Python中, __init__
和__new__
都參與對象創建,但它們的目的不同,並在不同的階段被稱為。當您進行高級對象自定義或使用不變類型時,了解差異會有所幫助。

__new__
:控制對象創建
__new__
是創建類實例時運行的第一個方法。它負責實際創建新實例。
- 這是一種靜態方法(您不必用
@staticmethod
對其進行裝飾,但行為就像一種)。 - 它必須返回類的實例 - 通常是通過調用
super().__new__(cls)
。 - 通常,當您想控制對象的創建方式時,通常會覆蓋
__new__
如果您是int
,str
或tuple
等不變的類型中進行不變的類型。
類myint(int): def __new __(Cls,value): #在創建實例之前修改值 值 *= 10 返回super().__新__(Cls,value) 打印(myint(5))#輸出:50
當您需要在創建實例之前調整輸入時,這可能很有用。

__init__
:控制對像初始化
使用__new__
創建對像後,Python調用__init__
初始化對象 - 設置屬性並執行設置邏輯。
- 這是一種實例方法,因此它將
self
作為第一個參數。 - 它不會返回任何東西(它應該
None
),因為屆時實例已經存在。 - 您的大多數初始化邏輯都將進入這裡。
班級人: def __init __(自我,名稱,年齡): self.name =名稱 self.age =年齡
您使用__init__
頻繁的頻率要比__new__
多。

什麼時候使用哪個?
這是一個快速分解:
- 使用
__new__
- 您正在使用不變的類型,並且需要在創建實例之前修改值。
- 您正在執行元編程或單身實現。
- 使用
__init__
時:- 您需要分配實例變量。
- 您正在為對象設置初始狀態或資源。
另外,請注意, __new__
可以選擇返回其他類的實例 - 這意味著它可以影響哪種對象的初始化。但是,一旦__new__
返回一個實例,除非None
,否則__init__
被調用。
概括
回顧:
-
__new__
創建對象。 -
__init__
初始化對象。 - 僅當您需要控制對象創建時,才覆蓋
__new__
- 覆蓋
__init__
當您需要在其創建後需要設置該對象時。
基本上就是這樣 - 不是太複雜了,但是如果您不關注的話,很容易混合。
以上是說明python中的`__init__''和`__ new__'之間的區別。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多態是Python面向對象編程中的核心概念,指“一種接口,多種實現”,允許統一處理不同類型的對象。 1.多態通過方法重寫實現,子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實現。 2.多態的實際用途包括簡化代碼結構、增強可擴展性,例如圖形繪製程序中統一調用draw()方法,或遊戲開發中處理不同角色的共同行為。 3.Python實現多態需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對象實現相同方法即可,這稱為“鴨子類型”。 4.注意事項包括保持方

"Hello,World!"程序是用Python編寫的最基礎示例,用於展示基本語法並驗證開發環境是否正確配置。 1.它通過一行代碼print("Hello,World!")實現,運行後會在控制台輸出指定文本;2.運行步驟包括安裝Python、使用文本編輯器編寫代碼、保存為.py文件、在終端執行該文件;3.常見錯誤有遺漏括號或引號、誤用大寫Print、未保存為.py格式以及運行環境錯誤;4.可選工具包括本地文本編輯器 終端、在線編輯器(如replit.com)

要生成隨機字符串,可以使用Python的random和string模塊組合。具體步驟為:1.導入random和string模塊;2.定義字符池如string.ascii_letters和string.digits;3.設定所需長度;4.調用random.choices()生成字符串。例如代碼包括importrandom與importstring、設置length=10、characters=string.ascii_letters string.digits並執行''.join(random.c

AlgorithmsinPythonareessentialforefficientproblem-solvinginprogramming.Theyarestep-by-stepproceduresusedtosolvetaskslikesorting,searching,anddatamanipulation.Commontypesincludesortingalgorithmslikequicksort,searchingalgorithmslikebinarysearch,andgrap

類方法是Python中通過@classmethod裝飾器定義的方法,其第一個參數為類本身(cls),用於訪問或修改類狀態。它可通過類或實例調用,影響的是整個類而非特定實例;例如在Person類中,show_count()方法統計創建的對像數量;定義類方法時需使用@classmethod裝飾器並將首參命名為cls,如change_var(new_value)方法可修改類變量;類方法與實例方法(self參數)、靜態方法(無自動參數)不同,適用於工廠方法、替代構造函數及管理類變量等場景;常見用途包括從

ListslicinginPythonextractsaportionofalistusingindices.1.Itusesthesyntaxlist[start:end:step],wherestartisinclusive,endisexclusive,andstepdefinestheinterval.2.Ifstartorendareomitted,Pythondefaultstothebeginningorendofthelist.3.Commonusesincludegetting

Python的csv模塊提供了讀寫CSV文件的簡單方法。 1.讀取CSV文件時,可使用csv.reader()逐行讀取,並將每行數據作為字符串列表返回;若需通過列名訪問數據,則可用csv.DictReader(),它將每行映射為字典。 2.寫入CSV文件時,使用csv.writer()並調用writerow()或writerows()方法寫入單行或多行數據;若要寫入字典數據,則使用csv.DictWriter(),需先定義列名並通過writeheader()寫入表頭。 3.處理邊緣情況時,模塊自動處理

參數(parameters)是定義函數時的佔位符,而傳參(arguments)是調用時傳入的具體值。 1.位置參數需按順序傳遞,順序錯誤會導致結果錯誤;2.關鍵字參數通過參數名指定,可改變順序且提高可讀性;3.默認參數值在定義時賦值,避免重複代碼,但應避免使用可變對像作為默認值;4.args和*kwargs可處理不定數量的參數,適用於通用接口或裝飾器,但應謹慎使用以保持可讀性。
