reference
- 知乎 python 实现单例模式的两种方式
- stack overflow 装饰函数 vs 装饰类
- medium Do we even need a class to realize singleton?
summary
单例模式大家肯定不陌生了,在读reference的两篇blog时突然发现用python实现单例模式的很多好玩之处。文章来源地址https://www.toymoban.com/news/detail-596657.html
- 用类实现单例模式是各种语言比较通用的方式。在python中的实现就是装饰类
- 在python中,函数也是object,所以也可以用装饰函数去实现
唯一令人疑惑的就是,这里的调用装饰函数方式不知道是如何的,难道不会每次把instances清空吗?def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class MyClass: def __init__(self): print(f"creating a new object myclass") self.nothing = 1 def getNothing(self): return self.nothing def addNothing(self): self.nothing += 1
- python中module就是一个最典型的单例,所以想要单例的对象放到module中即可!
文章来源:https://www.toymoban.com/news/detail-596657.html
到了这里,关于python 单例模式,装饰类,装饰函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!