1.单例模式:
单例是一种特殊的类,这种类只能创建一次实例。
2.单例的应用:
windows中的回收站用的就是单例模式,你可以多双击打开一下试试,它只能够被打开一次。我的电脑就不一样,可以能够打开多次
日志模块,只需要一个实例就可以在全局打印日志了。
数据库的连接。
3.简单实例实现
下面这个实例实现了一个类创建两个实例,两个实例之间进行对比是否是同一实例以及实例的属性是否发生改变。
具体实例应用可搜索python实现单例日志模块或者python实现单例数据库连接模块等。
4.推荐链接
这个链接讲的单例模式的应用以及它的优点,大家可以参考一下
import time
def singleton(cls):
instances = {}
def wrapper(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
print(instances)
return instances[cls]
return wrapper
@singleton
class StudentInfo(object):
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
@singleton
class StudentPart(object):
pass
foo1 = StudentInfo("niu", '19', 'nan')
print(foo1.name, foo1.age, foo1.sex)
time.sleep(5)
foo2 = StudentInfo("zha ng", '20', 'nv')
print("-----------------------")
print(foo1.name, foo1.age, foo1.sex)
print(foo2.name, foo2.age, foo2.sex)
part1 = StudentPart()
part2 = StudentPart()
print(foo1 is foo2)
print(part1 is part2)
5.实现结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c302062e212e3dac50a32828fe915763.png)