实现Python中的单例模式

原创
ithorizon 10个月前 (06-04) 阅读数 157 #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实例,但实际上只创建了一个实例,并且两次调用都返回了同一个实例对象。这就是单例模式的效果。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Python


热门