Python-__new__與__init__代碼筆記(自用)

首先,沒有return時

class User:
    def __new__(cls, *args, **kwargs):
        print ("I am in new ")
        return super().__new__(cls)
    def __init__(self, name):
        print ("I am in init")
        pass
a = int()
#new 是用來控制對象的生成過程, 在對象生成之前
#init是用來完善對象的
if __name__ == "__main__":
    user = User(name="aaa")
結果:
 in new 

因此,果new方法不返回對象, 則不會調用init函數

class User:
    def __new__(cls, *args, **kwargs):
        print (" in new ")
        print(cls)
        return super().__new__(cls)
    def __init__(self, name):
        print (" in init")
        print(name)
a = int()
#new 是用來控制對象的生成過程, 在對象生成之前
#init是用來完善對象的
#如果new方法不返回對象, 則不會調用init函數
if __name__ == "__main__":
    user = User(name="aaa")
結果:
 in new 
<class '__main__.User'>
 in init
 aaa
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章