1. 程式人生 > >Python3中的__new__()方法

Python3中的__new__()方法

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方法-----")
        return 
object.__new__(cls) #print(id(Dog)) xtq = Dog()

__new__方法只負責建立

__init__方法只負責初始化

__new__至少要有一個引數cls,代表要例項化的類,此引數在例項化時由Python直譯器自動提供

__new__必須要有返回值,返回例項化出來的例項,這點在自己實現__new__時要特別注意,可以return父類__new__出來的例項,或者直接是object的__new__出來的例項

__init__有一個引數self,就是這個__new__返回的例項,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值