當前位置:成語大全網 - 書法字典 - python init和new的區別

python init和new的區別

__new__ Role:創建對象並分配內存。

__init__ Role:初始化對象的值。

註意:

1.與java相比,java只有壹個構造函數。python__new__ method和__init__ method的組合可以稱為java對應的構造函數。

2.首先執行__new__,創建對象,分配內存。

然後執行__init__來初始化對象的值。

3.任何類都繼承自object類。

我們通常不重寫__new__方法。我們默認調用父類的__new__方法,無需重寫。

4、__new__方法,壹定要返回壹個對象。

如果重寫__new__方法,但不返回對象。甚至對象還沒有創建成功,以後也不會初始化對象。

示例1:

類別人員(對象):

def __init__(自己,姓名,id,性別):

self.name = name

self.id = id

自我.性=性

Print("初始化對象的值")

def __new__(cls,*args,**kwargs):

Print("開始創建對象並分配內存")

if __name__== '__main__ ':

P =人(“張三”,12。“男性”)

因此,只執行了__new__方法,而沒有執行__init__方法。

為什麽?由於新函數,沒有對象被返回。

正確用法

類別人員(對象):

def __init__(自己,姓名,id,性別):

self.name = name

self.id = id

自我.性=性

Print("初始化對象的值")

def __new__(cls,*args,**kwargs):

Print("開始創建對象並分配內存")

self = super()。__新__(cls)

回歸自我

if __name__ == '__main__ ':

P =人(“張三”,12。“男性”)

打印結果:

開始創建對象和分配內存。

初始化對象的值。