调用元类基时, object.__init__() 不带参数
Posted
技术标签:
【中文标题】调用元类基时, object.__init__() 不带参数【英文标题】:When calling the metaclass bases, object.__init__() takes no parameters 【发布时间】:2012-03-22 06:15:58 【问题描述】:当我尝试使用这种单例方法时:
class Singleton(object):
def __init__(self, name, bases, dict):
super(Singleton, self).__init__(name, bases, dict)
self._instance = None
def __call__(self):
if self._instance is None:
self._instance = super(Singleton, self).__call__()
return self._instance
class NewClass(object):
__metaclass__ = Singleton
我遇到了一个错误:
调用元类库时出错 object.init() 不带参数
我不确定,我是否正确理解了参数是什么,采用__init__
方法:name, bases, dict
。实际上 - 我的错误/不理解在哪里?
【问题讨论】:
【参考方案1】:元类派生自type
,而不是object
。
【讨论】:
这个答案不正确。至少在技术上。 Python2 和 Python3 的文档声明不允许从类型继承(尽管不推荐)。在 Python2 中,它可以是任何可调用的。以上是关于调用元类基时, object.__init__() 不带参数的主要内容,如果未能解决你的问题,请参考以下文章