Python如何实现单例模式?

用户69288316


在Python中有如下方式实现单例模式(我能够想到的方式):

  1. 通过模块

  2. 使用__new__

  3. 使用装饰器

  4. 使用静态方法

下面依次介绍一下

使用模块实现单例模式

python的模块就是天然的单例模式, 模块在第一次导入时, 生成.pyc文件, 以后就直接加载.pyc文件了. 如此, 我们直接将类放到模块中即可实现.

新建 MyTest.py文件, 内容如下:

要使用该单例类, 如下引入即可:

使用__new__实现单例模式

为了使类只能出现一个实例,我们可以使用__new__方法来控制实例的创建过程, 该方法是对象在实例化时调用的第一个方法, 实现代码如下:

返回True

使用装饰器实现单例模式

我们知道,装饰器可以动态的修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例:

上面定义了一个装饰器 singleton, 新建类的实例会启用装饰器方法, 通过此方法实现了单例模式

使用静态方法实现单例模式

通过调用类方法实现单例模式, 代码如下:


以上就是我能够想到的Python实现单例模式的几种方式.


分享到:


相關文章: