目录

  • 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相关推荐

  1. 剑指offer (02):实现 Singleton 单例模式 (Python 实现详解)

    本文大部分内容来自于Python中的单例模式的几种实现方式的及优化 ,在此基础上进行修改,整理. 1 题目 单例模式(Singleton Pattern)是一种常用的软件设计模式.在它的核心结构中只包 ...

  2. 单例模式(Singleton )的几种用法以及使用条件

    2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了 ...

  3. Java经典设计模式-创建型模式-单例模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JV ...

  4. 设计模式——3单例模式(Singleton)

    3.单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比 ...

  5. 【面试系列】6种单例模式(Singleton)实现方法比较

    转载文章,文章经 LiteCodes 授权,转载至本博客. 原文地址:[面试系列]6种单例模式(Singleton)实现方法比较 下述代码均省略了 Singleton 类的业务代码段,仅表现作为单例所 ...

  6. 设计模式学习笔记十:单例模式(Singleton Pattern)

    1.概述    单例模式(Singleton Pattern)又称单件模式,单例模式保证一个类仅有一个实例,并提供一个访问的他的全局访问点.通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你 ...

  7. python singleton design pattern super() 多继承

    python  singleton design pattern decorate baseclass metaclass import module super() 一.A decorator de ...

  8. 一文理解设计模式--单例模式(Singleton)

    单例模式(Singleton) Singleton模式确保每个Java类加载器只能有一个已有的实例并提供对其的全局访问,单例可以节省内存,加快对象访问速度 适用场景 需要频繁实例化然后销毁的对象 创建 ...

  9. java设计模式学习 ----- 单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种经常使用的设计模式. 在Java应用中,单例对象能保证在一个JVM中,该对象仅仅有一个实例存在.单例模式也分三种:懒汉式单例.饿汉式 ...

  10. 菜鸟的学习之路(6) — 设计模式之单例模式(Singleton)

    一.单例模式(Singleton): java有常用的23种设计模式,而单例模式(Singleton)是其中最简单的一种. 单例模式:也就是表示一个类只会唯一的一个对象. 1. 当对于资源不密集,配置 ...

最新文章

  1. python全栈简介_Python全栈(一)编程语言介绍
  2. 独家|OpenCV 1.1 Mat - 基本图像容器(附链接)
  3. Hystrix降级逻辑中如何获取触发的异常
  4. 去除cpp中注释的小程序
  5. OpenCV方向梯度直方图HOG的实例(附完整代码)
  6. 推荐一位零基础转 Python 的大佬
  7. nginx负载均衡常用的策略
  8. .net系统自学笔记——数组
  9. Python基础教程和入门教程
  10. java8-谓词(predicate)
  11. 容器技术Docker K8s 51 容器镜像服务(ACR)详解-进阶
  12. 用安卓手机看epub小说,哪些阅读器APP更好用?
  13. python2.4无线模块_使用nRF24L01模块进行无线射频通信
  14. 微带天线单元建模与辐射
  15. 树形结构的处理——组合模式
  16. TreeSet 和 TreeMap 排序
  17. 什么是黑链?什么是黑帽?什么是明链?
  18. [置顶]Gradle 实现 Android 多渠道定制化打包
  19. Win7下硬盘安装Ubuntu12.04双系统
  20. 同步光网络(SONET,Synchronous Optical Networking)简介

热门文章

  1. [hive 报错]:FAILED:SemanticException [Error 10025] Expression not in GROUP BY key
  2. 2.Hadoop3.x 基础知识
  3. c语言fopen错误指针,fopen出错的原因
  4. Mybatis源码学习-MapperMethod
  5. Briefings in bioinformatics2022 | 基于神经网络的分子性质预测通用优化策略
  6. python cmap,使用Matplotlib绘图时获取意想不到的输出 - Cmap - Python
  7. 如何高效管理工作微信
  8. 1230_SCons对于依赖的处理
  9. 7-3 拍7令三 (100 分)
  10. Oracle ERP 库存管理(业务流程 核心流程) [转]