首页 > 编程语言 > 详细

python中的 __inti__ 和 __new__ 方法的区别

时间:2019-11-22 19:53:50      阅读:188      评论:0      收藏:0      [点我收藏+]

这个要从Python的面向对象实例化的过程说起

类名() 之后,开辟一块内存空间,然后调用__init__把空间的内存地址作为self的参数传递到函数的内部,所有和self有关的参数,属性都会和self关联起来,执行__init__之后,self就会自动返回到调用出

 

class A:
    def  __new__(cls, *args, **kwargs):
        o = object.__new__(cls)
        print(执行了new,o)
        return o
    def __init__(self):
        print(执行init,self)
A()

# 实例化的时候
# 先创建一块对象的空间,有一个指针能指向类 --> __new__
# 调用init --> __init__

执行结果
执行了new <__main__.A object at 0x0000000001D927F0>
执行init <__main__.A object at 0x0000000001D927F0>

所以__new__是在__init__之前执行,

__new__ 是在对象创建之前创建一个对象,并将该对象返回给init。在创建类对象时调用

__init__ 在对象创建后,对对象进行初始化。在实例化时调用

 

技术分享图片

 

python中的 __inti__ 和 __new__ 方法的区别

原文:https://www.cnblogs.com/well-666/p/11913642.html

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