转自:https://www.wukong.com/answer/6599168618485776654/?iid=42657394244&app=news_article&share_ansid=6599168618485776654&app_id=13&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_ios&utm_campaign=client_share
在Python中有如下方式实现单例模式(我能够想到的方式):
通过模块
使用__new__
使用装饰器
使用静态方法
下面依次介绍一下
python的模块就是天然的单例模式, 模块在第一次导入时, 生成.pyc文件, 以后就直接加载.pyc文件了. 如此, 我们直接将类放到模块中即可实现.
为了使类只能出现一个实例,我们可以使用__new__方法来控制实例的创建过程, 该方法是对象在实例化时调用的第一个方法, 实现代码如下:
返回True
我们知道,装饰器可以动态的修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例:
上面定义了一个装饰器 singleton, 新建类的实例会启用装饰器方法, 通过此方法实现了单例模式
以上就是我能够想到的Python实现单例模式的几种方式.