栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

没有在子类中调用元类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

没有在子类中调用元类

问题是

cls
调用时未传递参数(即元类对象)
type
,因此
Y
创建并返回的类对象没有对metaclass的任何引用
Z

如果更换的最后一行

__new__

return super(Z, cls).__new__(cls, name, bases, attrs)

然后就可以了。请注意,即使在

cls
中使用,
super
我们也仍然必须提供它
cls
作为参数,因为
super
这里返回一个未绑定的方法(更多信息请参见此处)。

作为使用超级的替代方法,可以使用:

 return type.__new__(cls, name, bases, attrs)

重要的是我们将

cls
(我们的元类对象
Z
)赋予了classmethod
__new__
。较短的形式本身会
type(name, bases,attrs)
填充参数,这当然是错误的。此错误类似于使用错误的参数调用实例方法。
type``cls``self

我更喜欢使用

super
,因为这是更好的样式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号