2019独角兽企业重金招聘Python工程师标准>>>

如果想在整个程序的运行过程中,某个类只有一个实例的话,可以通过单例模式来实现。

在 Python 中实现单例模式有很多种方式,可以通过传统的在定义类的时候判断, 也可以通过模块级别的变量来实现,也可以通过装饰器实现等等, 有很多种方法可以实现。 但是基本上这些方法都可以破解 ;)

比如:

# 存储在类属性中,通过类方法去获取
class Singleton:__instance = None@classmethoddef instance(cls, *args, **kwargs):if cls.__instance is None:cls.__instance = cls(*args, **kwargs)return cls.__instance# 在类的 __new__ 方法中判断
class Singleton:__instance = Nonedef __new__(cls, *args, **kwargs):if Singleton.__instance is None:Singleton.__instance = object.__new__(cls, *args, **kwargs)return Singleton.__instances1 = Singleton()
s2 = Singleton()
assert id(s2) == id(s1)# 依附在一个可变对象上
def Singleton(*args, **kwargs):if Singleton.__instance is not None:return Singleton.__instanceclass _Singleton:def __init__(self):passSingleton.__instance = _Singleton(*args, **kwargs)return Singleton.__instance
Singleton.__instance = Nones1 = Singleton()
s2 = Singleton()
assert id(s1) == id(s2)# 闭包
class _Singleton:def __call__(self):return self
Singleton = _Singleton()
del _Singletons1 = Singleton()
s2 = Singleton()
assert id(s1) == id(s2)

转载于:https://my.oschina.net/u/2474096/blog/1506095

Python 设计模式: 单例模式(singleton pattern)相关推荐

  1. 解读设计模式----单例模式(Singleton Pattern)

    单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心:如何控制用户使用new对一个 ...

  2. 【设计模式】单例模式 Singleton Pattern

    通常我们在写程序的时候会碰到一个类只允许在整个系统中只存在一个实例(Instance)  的情况, 比如说我们想做一计数器,统计某些接口调用的次数,通常我们的数据库连接也是只期望有一个实例.Windo ...

  3. Python设计模式-单例模式

    Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...

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

    二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...

  5. Net设计模式实例之单例模式( Singleton Pattern)

    一.单例模式简介(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯 ...

  6. 常见设计模式—单例模式(Singleton)

    前言 好久没写东西了,但是想着无论什么事还是要坚持自己初心要坚持的东西.写东西不能断! 对于常用的23种设计模式,这里笔者会根据自己学习和出现频率.重要程度进行学习记录吧.并且每种设计模式可能会根据暂 ...

  7. 单例模式 Singleton Pattern

    源地址 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该 ...

  8. .NET设计模式(1):1.1 单例模式(Singleton Pattern)

    概述 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单 ...

  9. Java设计模式之单例模式(Singleton Pattern)

    **单例模式:用来创造独一无二的,只能有一个实例的对象设计模式.单例模式确保一个类只有一个实例,并提供一个全局访问点.**相比于全局变量(对对象的静态引用),单例模式可以延迟实例化,而且全局变量不能保 ...

最新文章

  1. Stanford UFLDL教程 深度网络概览
  2. NeurIPS 2020 | 聚焦自监督学习
  3. Mybatis-自定义类型处理器
  4. G6 图可视化引擎——入门教程——元素及其配置
  5. 这么画c语言编程流程图,我想问一下这两个C语言的流程图像图中这么画吗?
  6. cocos2d-x知识总结
  7. channelsftp的put_java实现sftp客户端上传文件以及文件夹的功能代码
  8. jenkins发布docker项目 harbor
  9. 掌握了开源框架还不够,你更需要掌握源代码
  10. 平均数和均值一样吗_求平均数!
  11. MongoDB的日志系统
  12. 运算符优先级(cpp/c)
  13. 什么是NVMe驱动器,您应该购买一个吗?
  14. 国内可外用免费语料库下载资源汇总, 语言翻译必备:国内外23个语料库推荐
  15. 局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍
  16. R语言绘图:直方图——hist
  17. 制作 macOS High Sierra 正式版 USB 启动盘的方法 (亲测可用)
  18. Sky Blue And Black
  19. UART串口通信协议
  20. Boolean初始值是什么?

热门文章

  1. Facebook最新语音算法曝光!自监督语音识别,错误率低至2.43%
  2. 计算机视觉迎新突破?谷歌AI模型打破现有CNNs精度
  3. SAP MM 明明有需求,为啥MRP RUN后没有PR单据产生?
  4. Neural Tensor Network详细介绍
  5. 智慧城市产业图谱(2020年)
  6. 存内计算能否成为下一代AI芯片的关键
  7. 一文读懂你该了解的5G知识:现在别买5G手机
  8. 当科学遇上众包:9个值得关注的前沿科技算力众包平台
  9. 谷歌将屏蔽一切与加密货币相关的广告 6月正式生效
  10. 中科院在2017年高被引科学家遴选中表现优异