实现Python中的单例模式
原创实现Python中的单例模式
在Python中实现单例模式有多种对策,这里介绍一种比较常用的方法。
首先,我们需要定义一个装饰器,用于将类变成单例模式。装饰器的代码如下:
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
然后,我们可以使用这个装饰器来创建单例类。例如,我们有一个名为MyClass的类,期望将其变成单例模式,可以这样写:
@singleton
class MyClass:
def __init__(self, name):
self.name = name
现在,当我们创建MyClass的实例时,无论创建多少次,都只会得到同一个实例对象。例如:
a = MyClass('Alice')
b = MyClass('Bob')
print(a is b) # 输出:True
print(a.name) # 输出:Alice
print(b.name) # 输出:Alice
在这个例子中,尽管我们尝试创建两个不同的MyClass实例,但实际上只创建了一个实例,并且两次调用都返回了同一个实例对象。这就是单例模式的效果。