我定义了这个单例元类:
class Singleton(type):
"""Metaclass which implements the singleton pattern"""
_instances = {}
def __call__(self, *args, **kwargs):
if self not in self._instances:
self._instances[self] = super(Singleton, self).__call__(*args, **kwargs)
return self._instances[self]
现在,我想测试一切是否正常。这是我尝试过的:
- 我创建了同一类的两个对象(具有
Singleton
元类的类)-它们的id()
匹配项 - 我创建了一个对象并将其分配给第二个变量——它们的
id()
匹配项 - 我导入了
copy
模块并复制了第一个对象copy.copy()
-它们id()
现在不匹配
我想知道为什么复制对象的 id 与原始对象不匹配。既然是单例,这两个对象不应该有相同的id吗?