Python3之实现单例模式de几种方式
来源:互联网 发布:天下3捏脸数据女妖艳 编辑:程序博客网 时间:2024/06/09 06:49
单例模式实现的几种方式
- 使用模块
- 使用__new__
- 使用装饰器
- 使用元类
使用模块
Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。
使用__new__
class Singleton: def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super().__new__(cls) return cls._instances0 = Singleton()s1 = Singleton()print(id(s0))print(id(s1))
使用装饰器
from functools import wrapsdef singleton(cls): instances = {} @wraps(cls) def getinstance(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances return getinstance@singletonclass Bar: passb0 = Bar()b1 = Bar()print(id(b0))print(id(b1))
使用元类
元类(metaclass)可以控制类的创建过程
class Singleton(type): """ 元类继承type """ _instance = {} def __call__(cls, *args, **kwargs): if cls not in cls._instance: cls._instance[cls] = super().__call__(*args, **kwargs) return cls._instanceclass Bar(metaclass=Singleton): passb0 = Bar()b1 = Bar()print(id(b0))print(id(b1))
阅读全文
0 0
- Python3之实现单例模式de几种方式
- 单例模式几种实现方式
- 验证python3实现单例模式的几种方法
- 设计模式之单例模式简介与几种实现方式
- Python3之实现单例模式
- 马士兵设计模式笔记1之单例的几种实现方式
- 单例模式singleton的几种实现方式
- 单例模式的几种实现方式的对比
- 单例模式的几种实现方式
- 单例模式的几种实现方式
- 单例模式的几种实现方式比较
- C#单例模式的几种实现方式
- 单例模式的几种实现方式总结
- Java单例模式几种实现方式
- 常用设计模式-单例的几种实现方式
- 单例模式的几种实现方式
- 单例模式的几种实现方式
- Java单例模式的几种实现方式
- Android开发自动生成的AndroidManifest.xml中的allowBackup属性的含义和危险性实例讲解
- jmap
- Spring 下CommonsMultipartResolver文件上传功能用法
- 内联函数
- 代码整洁之道(一)
- Python3之实现单例模式de几种方式
- Js如何调用本地应用程序
- Piontcut is not well-formed
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
- flex-grow、flex-shrink、flex-basis详解
- NKOJ 4151 (TJOI 2016&HEOI 2016)字符串(后缀数组+倍增+主席树)
- 度盘会员破解
- Java JDK 环境变量的配置