【发布时间】:2017-07-15 16:22:49
【问题描述】:
我正在尝试了解 python metaclass 和 class 之间的关系。我正在尝试创建单例类并找到此代码
class SingleTon(type):
def __call__(self, *args, **kwargs):
if self._instances is None:
self._instances = super(SingleTon, self).__call__(*args, **kwargs)
return self._instances
class Counter:
__metaclass__ = SingleTon
_instances = None
def __init__(self):
self.count = 1
c = Counter()
我的问题是如何使用 metaclass 创建计数器类对象。我知道 metaclass call 方法会在我们创建对象时被调用,但这里的混淆是这段代码 super(SingleTon, self).__call__(*args, * *kwargs) 在这里。请解释。这将是非常可观的。
【问题讨论】:
标签: python python-2.7 python-3.x