【单例模式】Python Singleton
目录
- Method 1: 装饰器
- Method 2: 基类
- Method 3: 元类(metaclass)
- Method 4: 应用一个模块
Method 1: 装饰器
def singleton(class_):instances = {}def getinstance(*args, **kwargs):if class_ not in instances:instances[class_] = class_(*args, **kwargs)return instances[class_]return getinstance@singleton
class MyClass(BaseClass):pass
优点: 装饰器是以一种比多重继承更直观的方式
缺点: 虽然实例化后的MyClass()将是真正的单例对象,但MyClass它本身是一个函数,而不是一个类,所以不能从中调用类方法。
x = MyClass();
y = MyClass();
t = type(MyClass)();
then x == y but x != t && y != t
Method 2: 基类
class Singleton(object):_instance = Nonedef __new__(class_, *args, **kwargs):if not isinstance(class_._instance, class_):class_._instance = object.__new__(class_, *args, **kwargs)return class_._instanceclass MyClass(Singleton, BaseClass):pass
优点:这是一个真正的类
缺点:多重继承,__new__可以在被第二个基类覆盖。
Method 3: 元类(metaclass)
class Singleton(type):_instances = {}def __call__(cls, *args, **kwargs):if cls not in cls._instances:cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)return cls._instances[cls]#Python2
class MyClass(BaseClass):__metaclass__ = Singleton#Python3
class MyClass(BaseClass, metaclass=Singleton):pass
优点:
这是一真正的类
可以__new__不会被继承所覆盖
缺点
我还没找到
Method 4: 应用一个模块
singleton.py 可以解决你的问题
优点: 简单胜于复杂
缺点: 不会延迟实例化
【单例模式】Python Singleton相关推荐
- 剑指offer (02):实现 Singleton 单例模式 (Python 实现详解)
本文大部分内容来自于Python中的单例模式的几种实现方式的及优化 ,在此基础上进行修改,整理. 1 题目 单例模式(Singleton Pattern)是一种常用的软件设计模式.在它的核心结构中只包 ...
- 单例模式(Singleton )的几种用法以及使用条件
2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了 ...
- Java经典设计模式-创建型模式-单例模式(Singleton)
2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JV ...
- 设计模式——3单例模式(Singleton)
3.单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比 ...
- 【面试系列】6种单例模式(Singleton)实现方法比较
转载文章,文章经 LiteCodes 授权,转载至本博客. 原文地址:[面试系列]6种单例模式(Singleton)实现方法比较 下述代码均省略了 Singleton 类的业务代码段,仅表现作为单例所 ...
- 设计模式学习笔记十:单例模式(Singleton Pattern)
1.概述 单例模式(Singleton Pattern)又称单件模式,单例模式保证一个类仅有一个实例,并提供一个访问的他的全局访问点.通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你 ...
- python singleton design pattern super() 多继承
python singleton design pattern decorate baseclass metaclass import module super() 一.A decorator de ...
- 一文理解设计模式--单例模式(Singleton)
单例模式(Singleton) Singleton模式确保每个Java类加载器只能有一个已有的实例并提供对其的全局访问,单例可以节省内存,加快对象访问速度 适用场景 需要频繁实例化然后销毁的对象 创建 ...
- java设计模式学习 ----- 单例模式(Singleton)
单例模式(Singleton) 单例对象(Singleton)是一种经常使用的设计模式. 在Java应用中,单例对象能保证在一个JVM中,该对象仅仅有一个实例存在.单例模式也分三种:懒汉式单例.饿汉式 ...
- 菜鸟的学习之路(6) — 设计模式之单例模式(Singleton)
一.单例模式(Singleton): java有常用的23种设计模式,而单例模式(Singleton)是其中最简单的一种. 单例模式:也就是表示一个类只会唯一的一个对象. 1. 当对于资源不密集,配置 ...
最新文章
- python全栈简介_Python全栈(一)编程语言介绍
- 独家|OpenCV 1.1 Mat - 基本图像容器(附链接)
- Hystrix降级逻辑中如何获取触发的异常
- 去除cpp中注释的小程序
- OpenCV方向梯度直方图HOG的实例(附完整代码)
- 推荐一位零基础转 Python 的大佬
- nginx负载均衡常用的策略
- .net系统自学笔记——数组
- Python基础教程和入门教程
- java8-谓词(predicate)
- 容器技术Docker K8s 51 容器镜像服务(ACR)详解-进阶
- 用安卓手机看epub小说,哪些阅读器APP更好用?
- python2.4无线模块_使用nRF24L01模块进行无线射频通信
- 微带天线单元建模与辐射
- 树形结构的处理——组合模式
- TreeSet 和 TreeMap 排序
- 什么是黑链?什么是黑帽?什么是明链?
- [置顶]Gradle 实现 Android 多渠道定制化打包
- Win7下硬盘安装Ubuntu12.04双系统
- 同步光网络(SONET,Synchronous Optical Networking)简介
热门文章
- [hive 报错]:FAILED:SemanticException [Error 10025] Expression not in GROUP BY key
- 2.Hadoop3.x 基础知识
- c语言fopen错误指针,fopen出错的原因
- Mybatis源码学习-MapperMethod
- Briefings in bioinformatics2022 | 基于神经网络的分子性质预测通用优化策略
- python cmap,使用Matplotlib绘图时获取意想不到的输出 - Cmap - Python
- 如何高效管理工作微信
- 1230_SCons对于依赖的处理
- 7-3 拍7令三 (100 分)
- Oracle ERP 库存管理(业务流程 核心流程) [转]