我的类层次结构覆盖了__new__
,但是对于我的一个子类,我希望它能正常工作。
我的等级为type
-> MetaClass
-> Class
这是我的代码:
class Class(MetaClass):
def __call__(self, *_, **__):
print(_, __)
def __init__(self, l):
print(l)
def __new__(*cls):
return cls[0]
test = Class()
如果调用__init__
,最后一行应该会导致错误,但不是,我想念的是什么?
答案 0 :(得分:1)
__new__
不返回Class
的实例,因此不会调用__init__
。 From the object.__new__
documentation:
如果
__new__()
返回cls
的实例,则新实例的__init__()
方法将像__init__(self[, ...])
一样被调用,其中self
是新实例,其余参数与传递给__new__()
的参数相同。如果
__new__()
未返回cls
的实例,则将不会调用新实例的__init__()
方法。