Documentation for object.__new__(cls[, ...])
says:
调用以创建类
cls
的新实例。 __new
__是静态的 需要的方法(特殊的,所以你不需要声明它) 请求实例作为其第一个参数的类。
所以,如果你有var = MyClass()
和
class MyClass:
def __new__(cls):
...
赢了cls
总是等于MyClass
?
答案 0 :(得分:2)
试试这个:
class MyClass:
def __new__(cls):
print(cls)
class Yac(MyClass):
pass
x = Yac()
print(x)
我们得到:
<class '__main__.Yac'>
None
顺便说一下,这在Python 3中很好,但在Python 2中不起作用。在Python 2中__new__
仅在“新式”类中受支持:
class MyClass(object):
在Python 3中,所有类都是“新风格”。