【发布时间】:2019-12-16 16:18:50
【问题描述】:
我相信我对__new__ 应该做什么有一定的了解(创建一个类的实例,但不初始化它,这是__init__ 的工作)。但是,我想了解 Python 3 默认将什么实现为 __new__ 方法。
我还觉得 cls 是 __new__ 的参数有点令人困惑,但 __new__ 是静态方法而不是类方法(我从 documentation 得到这个)...它被传递一个类型作为它的第一个参数?
【问题讨论】:
-
1.
object.__new__是默认的,有什么要了解的? 2. 通过检查isinstance(cls, type)或实现语言中的等效项。 -
@juanpa.arrivillaga 我从来没有参与过 CPython 的实现,你能解释一下那里发生了什么吗?看起来类似于
self.__init__()的东西被返回了? -
@Goyo 你什么意思?如果
object.__new__是默认值,它的作用是什么?我在哪里可以找到这些信息?另外,将 cls 作为参数呢?__new__是类方法吗? -
@juanpa.arrivillaga 这可以用纯python重新创建还是不可能?
标签: python python-3.x default-constructor class-constructors