python __new__() 方法

class Dog(object):
    def __init__(self):
        print("init方法")

    def __del__(self):
        print("del方法")

    def __str__(self):
        print("str 方法")

    def __new__(cls): #cls 
        #print(id(cls))

        print("new方法")
        return object.__new__(cls)

XTQ = Dog()

 

当执行 xtq =  Dog() 时,首先执行 等号右边"Dog()"  

(1)调用__new__方法创建对象,然后找一个特殊变量接收__new__ 返回值,这个返回值就是创建对象的引用;(而这个特殊变量指向这个对象 )

(2)这个对象调用__init__(self)方法,传入对象引用,self 指向刚刚创建的对象(__new__ 方法返回的特殊变量传给self)

(3)返回对象的引用 这个XTQ自然就指向了这个对象

总结:__new__方法只负责创建,__init__方法只负责初始化, 

NOTE:不是说在这里调用__new__方法,__new__方法自己调用__init__方法,而是先调用__new__方法,__new__方法执行完后保存其返回值,再去调用__init__方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值