__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。“男性”)
打印結果:
開始創建對象和分配內存。
初始化對象的值。