关于python:python3中__new__定义了什么?

Where is __new__ defined in python3?

本问题已经有最佳答案,请猛点这里访问。

2:在Python

1
2
3
4
5
6
7
8
9
10
11
12
>>> class A:
...  pass
...
>>> A.__new__
Traceback (most recent call last):
  File"<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__new__'
>>> class A(object):
...  pass
...
>>> A.__new__
<built-in method __new__ of type object at 0x1062fe2a0>

结论:__new__继承和子类object包含方法。

3:在Python

1
2
3
4
5
>>> class A:
...  pass
...
>>> A.__new__
<built-in method __new__ of type object at 0x100229940>

确定的方法在我们的__new__是一级,没有任何继承。这个工作如何?在__new__"一词来自"?


在python 3中,如果创建一个类而不添加父类,它将自动从对象继承。您不能再创建像python 2这样的旧式类了。

例子:

1
2
class A: # gets defaulted to class A(object):
    pass

python3中的所有类都是object的子类,从mro中可以看到:

1
2
3
4
>>> class A: pass
...
>>> A.__mro__
(<class '__main__.A'>, <class 'object'>)

为了保持与python 2的向后兼容性,在一些python 3代码中仍然可以执行class A(object)