1. 利用__metaclass__

这种写法的好处是,一处声明,到处引用,只要是想弄成单例的,直接设置就可以了,废话不说上代码

# 注意,继承type
class Singleton(type):def __call__(cls, *args, **kwargs):if not hasattr(cls, '_instance'):cls._instance = super(Singleton, cls).__call__(*args, **kwargs)return cls._instanceclass Test(object):# __metaclass____metaclass__ = Singletont1 = Test()
t2 = Test()
print t1 == t2

想深入了解, 可以搜索python type详解,以及python类初始化的流程

2. 每个类单独写

这种写法好处是,可以给自己的单例类加上特有的逻辑

class MyTest(object):def __new__(cls, *args, **kwargs):if not hasattr(cls, '_instance'):# 两种写法,实际上都是为了调用object.__new__cls._instance = object.__new__(cls, *args, **kwargs)# cls._instance = super(MyTest, cls).__new__(cls, *args, **kwargs)return cls._instancea = MyTest()
b = MyTest()
print a == b

python单例模式的几种写法相关推荐

  1. Java 实现单例模式的七种写法

    单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如, ...

  2. 单例模式的八种写法比较

    转:https://www.cnblogs.com/zhaoyan001/p/6365064.html 单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生.一般介绍单例模式的书籍 ...

  3. 【设计模式】各个击破单例模式的8种写法

    单例模式 在一个系统开发过程中,我们在基于节省内存资源.保证数据内容的一致性的考虑上,往往需要对某些类要求只能创建一个实例,即「保证类只有一个实例」的设计模式就是单例模式. 比如我们遇到过的各种Man ...

  4. Java设计模式之单例模式(七种写法)

    Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton {private static Singleton ...

  5. 使用严格模式的坏处_再见面试官:单例模式有几种写法?

    点击上方"JAVA",星标公众号重磅干货,第一时间送达 饱汉模式 饿汉模式 Holder模式 枚举模式 丑陋但好用的语法糖 总结 " "你知道茴香豆的'茴'字有 ...

  6. python单例模式的4种实现方法_Python单例模式的4种实现

    模块在一个Python应用程序中只有一份,它本身就是单例的,将所需要的属性和方法,直接暴露在模块中的全局变量和方法,也可以实现单例. Python单例模式的4种实现 # !/usr/bin/env p ...

  7. 单例模式的7种写法及其应用场景你都熟悉了吗,快来看看吧

    单例模式的7种写法 定义 单例模式的写法有以下7种 1. 饿汉式(静态常量) 2. 懒汉式(线程不安全) 3. 懒汉式(线程安全,同步方法) 4. 懒汉式(线程安全,同步代码块) 5. 双重检查 6. ...

  8. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  9. Python单例模式中几种实现及优化方法

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

最新文章

  1. 霍尼韦尔epks 操作 组态 维护 使用 硬件 手册_标准四合一气体检测仪霍尼韦尔MiniMAX X4...
  2. 视频直播技术详解(5)延迟优化
  3. (原创)惠州市惠阳区房价偏低的原因深入分析
  4. python元组和集合
  5. C 标准库 - limits.h
  6. android查看第三方libs的jar源码
  7. C++结构体字节对齐
  8. visual studio 2015无法打开包括文件
  9. Windows 右键菜单修复
  10. 应届毕业生找工作很迷茫?4招教你快速破局,应届生必看!
  11. PHP中单引号与双引号用法
  12. Oracle TFA日志收集工具简介
  13. history.back(argu);
  14. Android10.0通知Notification的使用这一篇就够了
  15. 舞象云出席泰华商城智慧营销系统上线发布会,问道传统百货新未来
  16. 杭州购买油车流程笔记
  17. 提供免费可商用的优秀背景视频素材——COVERR
  18. 派格生物科创板IPO状态终止:尚未实现商业化,2020年亏损1.3亿元
  19. highstock蜡烛图设置crosshair渐变色
  20. 机器学习 | 回归问题

热门文章

  1. 一看书就瞌睡,在学习编程中会遇见的一些问题
  2. 探秘最新Linux内核中的自旋锁
  3. c_d是java 合法标识么,下面哪个不是Java合法标识符?A.()_number()B.()sum()C.()2Java()D.()$abc...
  4. linux分区(详细介绍)
  5. netty——黏包半包的解决方案、滑动窗口的概念
  6. 设置Ubuntu-18息屏时间
  7. 向量内积和外积的计算以及意义
  8. 有没有办法破解密码的Excel的VBA项目
  9. 乱七八糟的各式各样的面试题
  10. 基于 Bootstrap 4 构建的家居装饰和家具 购物主题 HTML 网站模板