介绍几种python实现单例的方法

原创 2018年04月17日 20:14:05

实现单例的方法可以有很多种,但他们的原理都是相通的,即当第二次再去创建对象的时候都会返回第一次所创建的对象

第一种:使用装饰器

    第一次创建Myclass的实例对象时,字典instances为空,将会返回一个对象,并且该对象的引用也将保存到instances里面,

当再次创建对象的时候则会返回第一次创建的对象,从而实现了单例

def singleton(cls, *args, **kw):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls(*args, **kw)
        return instances[cls]
    return getinstance


@singleton
class MyClass(object):
    pass
第二种:使用__new__方法

    所有的类创建对象的时候都必须实现object中__new__,我们可以才实现object中__new__方法的前面加个条件判断,没有实例对象的时候才会调用object中的__new__方法,否则直接返回第一个实例对象

class MyClsass(object):
    instance = None

    def __new__(cls, *args, **kwargs):
        if not cls.instance:
            cls.instance = super().__new__(cls)
        return cls.instance

第三种:使用模块导入
    请看下面伪代码,导入singleton.py中的一个对象obj,其中obj就是一个单例
# singleton.py
class singleton(object):
	pass

obj = singleton()

# test.py
from singleton import obj


单例模式的几种实现方式

当一个类只能有一个对象时,往往会用到单例模式,例如,现实生活中有很多临界资源,像 打印机、处理器(单核)、皇帝、太子等等,它们都是稀有资源,只能有一个实例对象。下面用java将单例模式实现:     ...
  • z507263441
  • z507263441
  • 2013-11-10 02:05:14
  • 10498

Singleton单例模式的几种创建方法

创建单例类有以下几种方式: 饿汉式 懒汉式(加同步锁的懒汉式、加双重校验锁的懒汉式、防止指令重排优化的懒汉式) 登记式单例模式 静态内部类单例模式 枚举类型的单例模式 备注: 其中“枚举类型的单例...
  • hl_java
  • hl_java
  • 2017-04-12 22:53:47
  • 474

单例模式的五种实现方式

单例模式可以说是23中设计模式中应用最广的一种模式了。        定义:确保某一个类只有一个实例,自行实例化并且想整个系统提供这个实例。       使用场景:避免某个类产生多个对象而消耗过多...
  • soul_code
  • soul_code
  • 2015-12-05 09:53:06
  • 10207

iOS单例模式的实现方法总结

概念: 单例(Singletion):保证一个类只有一个实例,并提供一个对该实例的全局访问点。 线程安全: 实现方法: 方法1:...
  • zengxu2011
  • zengxu2011
  • 2015-05-18 17:58:36
  • 321

单例模式学习及几种不同写法

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想...
  • yueaini10000
  • yueaini10000
  • 2016-06-24 09:33:23
  • 542

java中实现单例模式的几种方式,简单易懂

一、饿汉式单例类 public class Singleton { private Singleton(){ } private static Singl...
  • yuxin6866
  • yuxin6866
  • 2016-08-14 09:39:19
  • 2996

实现单例的几种方式

方法1:很经典的,也是用的很多的。
  • zhangjianbo1989
  • zhangjianbo1989
  • 2014-08-04 17:41:55
  • 277

单例模式的6种实现方式

为什么使用单例模式需要确保某个类只要一个对象,或创建一个类需要消耗的资源过多,如访问IO和数据库操作等,这时就需要考虑使用单例模式了。使用单例模式需要注意的关键点 将构造函数访问修饰符设置为priva...
  • ts1900
  • ts1900
  • 2016-05-13 16:03:16
  • 2011

干货:结合Scikit-learn介绍几种常用的特征选择方法

  • 2016年02月27日 17:13
  • 1.34MB
  • 下载

C#单例模式的几种实现方式

C#单例模式的几种实现方式
  • yanlovehan
  • yanlovehan
  • 2016-11-09 10:07:42
  • 2429
收藏助手
不良信息举报
您举报文章:介绍几种python实现单例的方法
举报原因:
原因补充:

(最多只允许输入30个字)