Python如何实现单例模式?
在Python中有如下方式实现单例模式(我能够想到的方式):
-
通过模块
-
使用__new__
-
使用装饰器
-
使用静态方法
下面依次介绍一下
使用模块实现单例模式
python的模块就是天然的单例模式, 模块在第一次导入时, 生成.pyc文件, 以后就直接加载.pyc文件了. 如此, 我们直接将类放到模块中即可实现.
新建 MyTest.py文件, 内容如下:
要使用该单例类, 如下引入即可:
使用__new__实现单例模式
为了使类只能出现一个实例,我们可以使用__new__方法来控制实例的创建过程, 该方法是对象在实例化时调用的第一个方法, 实现代码如下:
返回True
使用装饰器实现单例模式
我们知道,装饰器可以动态的修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例:
上面定义了一个装饰器 singleton, 新建类的实例会启用装饰器方法, 通过此方法实现了单例模式
使用静态方法实现单例模式
通过调用类方法实现单例模式, 代码如下:
以上就是我能够想到的Python实现单例模式的几种方式.