zoukankan      html  css  js  c++  java
  • 介绍几种python实现单例的方法

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

    第一种:使用装饰器

        第一次创建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


  • 相关阅读:
    关于ubantu在VMWARE里安装时出现'SMBus Host Controller not enabled'
    临时备忘录
    第七届 山东ACM热身赛 Dwarf Tower
    数学问题题目连接
    蓝桥杯2016决赛 凑平方数
    博弈整理(取物)
    格子刷油漆(DP)
    蓝桥杯第六届总决赛B组
    蓝桥杯第五届决赛B组
    蓝桥杯第四届总决赛
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235495.html
Copyright © 2011-2022 走看看