【问题标题】:What is the difference between "Creating an object" and "Initializing" an object? [duplicate]“创建对象”和“初始化”对象有什么区别? [复制]
【发布时间】:2021-10-25 21:45:45
【问题描述】:

最近,我看到有人在谈论__new__ 方法并阅读了一篇有关它的文章。 (我之前一直用__init__,从来不知道__new__) 文章解释了__new__方法是在创建对象时调用的,然后会调用__init__方法来初始化对象。

有什么区别?初始化对象是什么意思?

【问题讨论】:

    标签: python


    【解决方案1】:

    两种方法都被调用。 __new__ 首先被调用,它返回一个类的实例。此实例作为self 传递给__init__

    阅读here了解更多信息。

    【讨论】:

      【解决方案2】:

      正如下面链接中提到的以及根据我的经验,我们总是使用__init__ 来定义类构造函数,但我很少看到有人使用__new__

      要解释的另一点是,如果要对 str、int、Unicode 或 tuple 等不可变类型进行子类化,请使用 __new__。不可变对象是在程序运行期间不会改变的对象。

      https://dev.to/pila/constructors-in-python-init-vs-new-2f9j

      【讨论】:

        【解决方案3】:

        在python中一切都是一个对象,所以当你创建一个类时,python会创建一个类对象。假设这段代码:

        class Example:
            def __init__(self) -> None:
                self.var = 0
        

        python 创建一个 Example 类对象。在这个对象中有一些方法,例如__init____new__。然后假设代码和平:

        obj = Example()
        

        在运行时,python 调用 Example 类对象上的 __new__ 方法并将距离(__new__ 结果)传递给 __init__ 方法。现在你有了你的对象。

        【讨论】:

          猜你喜欢
          • 2016-09-07
          • 2010-10-18
          • 2017-05-13
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2019-03-10
          • 1970-01-01
          • 2012-07-06
          相关资源
          最近更新 更多