Python 元类(Metaclasses)-是谁从类中实例化新对象?

通常,我们会认为 __init__ 方法从一个类中实例化一个对象。实际上,是静态方法 __new__(他不是类方法)实例化新对象,在 __init__ 被调用之前。它返回了:return super(<currentclass>, cls).__new__(subcls, *args, **kwargs)

让我们搞乱 __new__ 让它返回None,看看 __init__ 还会不会执行:

来看看以上代码,__init__ 需要一个从__new__来实例来调用,而这里创建了一个NoneType 对象,所以没有执行__init__方法。

让我们再次重写__new__:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注