Python如何实现单例模式?

转自: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中有如下方式实现单例模式(我能够想到的方式):

  1. 通过模块

  2. 使用__new__

  3. 使用装饰器

  4. 使用静态方法

下面依次介绍一下

使用模块实现单例模式

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

新建 MyTest.py文件, 内容如下:Python如何实现单例模式?_第1张图片

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

使用__new__实现单例模式

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

Python如何实现单例模式?_第2张图片

返回True

使用装饰器实现单例模式

我们知道,装饰器可以动态的修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例:Python如何实现单例模式?_第3张图片

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

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

通过调用类方法实现单例模式, 代码如下:Python如何实现单例模式?_第4张图片


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

你可能感兴趣的:(python)