首页 > 其他 > 详细

__new__与__init__

时间:2020-02-17 22:34:54      阅读:61      评论:0      收藏:0      [点我收藏+]

1.构造方法包括创建对象和初始化对象,在python当中,分为两步执行:先执行__new__方法,然后执行__init__方法;
2.__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
3.__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
总结:也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

 

例如:

class A:

    def __init__(self):

        print(self)

        print("self id :",id(self))

        print("in __init__")

 

    def __new__(cls, *args, **kwargs):

        print("cls id",id(cls))

        print("in __new__")

        ret = object.__new__(cls)

        print(ret)

        print("ret id: ",id(ret))

        return ret

 

print("A id",id(A))

aa = A()

 

结果:

A id 2325495978840

cls id 2325495978840

in __new__

<__main__.A object at 0x0000021D726FCA20>

ret id:  2325497236000

<__main__.A object at 0x0000021D726FCA20>

self id : 2325497236000

in __init__

 

技术分享图片

 

__new__与__init__

原文:https://www.cnblogs.com/wenshu/p/12323885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!