类未调用__init__

时间:2018-06-22 16:22:27

标签: python-3.x oop object

我的类层次结构覆盖了__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__,最后一行应该会导致错误,但不是,我想念的是什么?

1 个答案:

答案 0 :(得分:1)

__new__不返回Class的实例,因此不会调用__init__From the object.__new__ documentation:

  

如果__new__()返回cls的实例,则新实例的__init__()方法将像__init__(self[, ...])一样被调用,其中self是新实例,其余参数与传递给__new__()的参数相同。

     

如果__new__()未返回cls的实例,则将不会调用新实例的__init__()方法。