为什么__new__是静态方法而不是类方法?

时间:2015-03-01 09:45:11

标签: python

根据the docs

  

__new__()是一种静态方法(特殊情况,因此您无需声明   就像这样),它接受一个实例被请求的类   它的第一个论点。

显式不是类方法,但通常看起来像一个,除了手动调用__new__的任何客户端需要显式传入类参数。例如:

>>> str.__new__()
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    str.__new__()
TypeError: str.__new__(): not enough arguments
>>> str.__new__(str)
''

但备用对象创建API - 例如all eight alternate datetime constructors - 通常是classmethod s,因此datetime.now()按预期工作。

为什么__new__设置为这样?

0 个答案:

没有答案