关于python 单例模式和Borg
Singleton 模式,中文既为 单实例模式 。
Python真的需要单例模式吗?我指像其他编程语言中的单例模式。答案是:不需要!
因为,Python有模块(module),最pythonic的单例典范。
模块在在一个应用程序中只有一份,它本身就是单例的,将你所需要的属性和方法,直接暴露在模块中变成模块的全局变量和方法即可!
如果你真的想要用python 实现单例模式,下面的代码可参考:
class Borg:
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
上面是简洁的,下面是形象的
class Singleton(object):
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(
cls, *args, **kwargs)
return cls._instance
if __name__ == '__main__':
s1=Singleton()
s2=Singleton()
if(id(s1)==id(s2)):
print "Same"
else:
print "Different"
0
See Also
- python解析apk包信息
- python “decoder JPEG not available PIL”
- python 用urllib2抓取网页和发布(登录或发布文章)的基本操作
- 2018 Python数据可视化:为什么这么多的库?
- python Markdown 解析库速度比较