python3.6_单例模式,,单例模式的几种实现方
python3.6_单例模式,,单例模式的几种实现方
单例模式的几种实现方式:
1.使用模块
2.使用__new__
3.使用装饰器
4.使用元类
使用模块:python的模块就是天然的单例模式,因为模块在第一次导入的时候,会生成.pyc的文件,在第二次导入的时候就会直接加载.pyc文件,而不会再次执行模块代码
使用__new__:
# 实例化一个单例class Singleton(object): __instance = None def __new__(cls, age, name): #如果类属性__instance的值为None, #那么就创建一个对象,并且赋值为这个对象的引用,保证下次调用这个方法时 #能够知道之前已经创建过对象了,这样就保证了只有1个对象 if not cls.__instance: cls.__instance = object.__new__(cls) return cls.__instancea = Singleton(18, "dongGe")b = Singleton(8, "dongGe")print(id(a))print(id(b))
使用装饰器:
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))
python3.6_单例模式
相关内容
- python中执行js,,import exe
- Python是什么?简单了解pythonp-入门,,简单了解python
- Python--数的阶乘,,迭失法def fac
- Python — magic method,,Python 中内置
- python——面向对象(三),,"""""一成员修饰
- python sublime3 [Decode error - output not utf-8] 中文显示问题,
- python selenium 自动化测试图片识别1,,本人纯野生测试猿
- Python安装PyOpenGL,,1.目前PyOpen
- 4.28-python学习笔记(转义符&input函数),,参考书
- Python 绘图与可视化 matplotlib 制作Gif动图,,参考链接:
评论关闭