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


  • 相关阅读:
    水晶报表 VS2010 应用
    crystalreport使用方法
    spring MVC核心思想
    一台服务器配置多个TOMCAT
    SQL server索引
    锁机制
    JAVA书籍
    Live 直播过程
    html5 video微信浏览器视频不能自动播放
    设计模式 抽象工厂模式
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235495.html
Copyright © 2011-2022 走看看