Python3中的__new__()方法
阿新 • • 發佈:2019-02-19
class Dog(object): def __init__(self): print("----init方法-----") def __del__(self): print("----del方法-----") def __str__(self): print("----str方法-----") return "物件的描述資訊" def __new__(cls):#cls此時是Dog指向的那個類物件 #print(id(cls)) print("----new方法-----") returnobject.__new__(cls) #print(id(Dog)) xtq = Dog()
__new__方法只負責建立
__init__方法只負責初始化
__new__至少要有一個引數cls,代表要例項化的類,此引數在例項化時由Python直譯器自動提供
__new__必須要有返回值,返回例項化出來的例項,這點在自己實現__new__時要特別注意,可以return父類__new__出來的例項,或者直接是object的__new__出來的例項
__init__有一個引數self,就是這個__new__返回的例項,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值