python单例模式
来源:互联网 发布:java 获取tomcat路径 编辑:程序博客网 时间:2024/06/08 11:09
单例模式是软件开发中一种常用的设计模式,其目的是未来保证系统中一个类只有一个实例。即一个类只有一个对象实例。
使用python实现单例模式有4种方案:
1.使用import
首先编写一个singleton.py的文件
#singleton.pyclass Singleton(object): def My_singleton(): passmysingleton = Singleton.My_singleton()
使用时候直接import
from singleton import mysingletonclass myclass: a=1
2.使用装饰器
这个问题在一次面试中被面试官问到了,问什么是装饰器,因为当时用flask比较多,答得就答到路由上了。顾名思义,装饰器就是起装饰作用的。设你新买的毛胚房子是你新写的一个类,如果你嫌弃新买的房子功能不齐全,你就会开始装潢你的房子,给它添加大量的家具与其他设备。而不是在买一个精装房子。装潢的过程就是在添加装饰的过程,在保证原有类不变的i情况下添加需要的功能。
那么如何用装饰器来做单例模式呢?
def singleton(cls ,*agrs , **kwargs): instance = {} def getinstance(): if cls not in instance: instance[cls] = cls(*agrs , **kwargs) return instance return getinstance@singletonclass MyClass(): a = 1
3.使用元类
元类是一个很高深的概念,利用元类来做单例模式是这样做的:
class Singleton(type): _instance = None def __call__(cls , *args , **kwargs): if cls not in cls._instance: cls._instance[cls] = super(Singleton,cls).__call__(*args , **kwargs) return cls._instance[cls]
4 使用静态类__new__
class Singleton(): _instance = None def __new__(cls , *args , **kwargs): if cls not in cls._instance: cls._instance = super(Singleton , cls).__new__(*args , **kwargs) return cls._instance
本文在学习python的单例模式之后默写的代码,可能有误,参考的代码地址为
阅读全文
1 0
- Python单例模式
- Python单例模式
- 单例模式(python)
- python单例模式
- python单例模式
- python 单例模式
- python单例模式
- python单例模式
- python单例模式
- Python 单例模式
- Python 单例模式
- Python -- 单例模式
- Python单例模式
- Python单例模式
- 单例模式--Python
- python 单例模式
- python单例模式
- python-单例模式
- python学习——类属性与实例属性
- IE6 BUG的解决方法
- kmp详解
- 数组长度计算
- 【清华集训2017模拟】Catalan
- python单例模式
- Eclipse配置Java类文件的注释模板
- src与href的区别
- Maven命令
- 8-20 DAIRY
- 网易2017秋招编程
- 调用阿里云接口实现短信消息的发送源码——CSDN博客
- 进程间通信方式
- 原创:使用脚本获取本机IP地址