【发布时间】:2014-07-10 08:00:25
【问题描述】:
我正在使用来自Creating a singleton in Python 的方法 3:元类 从单例类创建对象。
现在根据某些事件,我想删除这个单例对象并从元类维护的字典中删除它的条目。
我怎么能做到这一点(不改变单例类)?
这里是代码 sn-p 以便更好地理解:
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class MyClass():
__metaclass__ = Singleton
def __init__(self, val1):
self.val1 = val1
obj1 = MyClass(10)
print obj1.val1
del obj1
obj2 = MyClass(20)
print obj2.val1
输出:
10
10
【问题讨论】:
标签: python python-2.7 singleton metaclass