zoukankan      html  css  js  c++  java
  • python中的 __inti__ 和 __new__ 方法的区别

    这个要从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 教程之String
    python 斐波纳契数列实现
    js 中 document.createEvent的用法
    C#里调用 MysqlDB
    [网购]
    [ENLearning] 2010920
    [EN Learning] 2010913
    [EN Learning] 2010910
    [ENLearning] 2010921
    [EN Learning] 2010916
  • 原文地址:https://www.cnblogs.com/well-666/p/11913642.html
Copyright © 2011-2022 走看看