在Python中,实现单例模式的一种方式是使用装饰器。定义一个名为singleton的装饰器函数,将需要被单例化的类作为参数传入。该装饰器使用一个字典来存储类的实例,并在访问实例时检查是否已经存在实例,如果已经存在,则返回该实例,否则创建新的实例并存储到字典中。具体代码如下所示:
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class MyClass:
pass
obj1 = MyClass()
obj2 = MyClass()
print(obj1 is obj2) # True
print(id(obj1), id(obj2)) # Same ID