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


  • 相关阅读:
    前端优化,注意的一些东西
    php遍历memcache的方法
    mysql增量备份
    CI框架安装
    sphinx:received zerosized searchd response
    SEO思考:逆水行舟 不进则退
    利用GNUstep在windows下编写objectc
    Centos5.3下安装memcached
    想卖网站?我来给你指条明路
    时髦的互联网公司都在用什么技术?
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235495.html
Copyright © 2011-2022 走看看