美文网首页
python单例模式的几种写法

python单例模式的几种写法

作者: guoweikuang | 来源:发表于2018-02-02 17:29 被阅读180次

一、装饰器模式

def singleton(cls, *args, **kwargs):
    instance = {}
    def _singleton():
        if cls not in instance:
            instance[cls] = cls(*args, **kwargs)
        return instance[cls]
    return _sigleton

@singleton
class Test(object):
    a = 1
    
test = Test()
test1 = Test()
print(id(test) == id(test1))
            
>>> True

二、使用new方法

class Singleton(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kargs)
        return cls._instance
        
class Test(Singleton):
    a = 1
    
test = Test()
test1 = Test()
print(id(test) == id(test1))
>>> True

三、共享dict方法

class Singleton(object):
    _state = {}
    def __new__(cls, *args, **kwargs):
        obj = super(Singleton, cls).__new__(cls, *args, **kwargs)
        obj.__dict__ = obj._state
        return obj
        
class Test(Singleton):
    a = 1
    
test = Test()
test1 = Test()
print(id(test) == id(test1))
print(id(test.__dict__) == id(test1.__dict__))
>>> False
>>> True

四、import导入

# a.py
class Test(object):
    a = 1
test = Test()

# b.py
from a import test
print(id(test))

# c.py
from a import test
print(id(test))

相关文章

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • 2018-06-19 Python中的单例模式的几种实现方式的及

    转载自: Python中的单例模式的几种实现方式的及优化 单例模式 单例模式(Singleton Pattern)...

  • java 24 设计模式

    单例模式java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、...

  • Java设计模式—单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...

  • python单例模式的几种写法

    一、装饰器模式 二、使用new方法 三、共享dict方法 四、import导入

  • Java设计模式_单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种.这里主要介绍:懒汉式 饿汉式. 单例模式有...

  • 2019-08-27 java设计模式之单例模式

    1.单例模式概述 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿...

  • java设计模式(一)

    概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、...

  • Java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、...

  • 单例模式与多线程

    这里直接给出几种懒汉模式的单例多线程安全的写法。这种写法就是普通的单例模式,但是是非线程安全的,至于原因,根据前面...

网友评论

      本文标题:python单例模式的几种写法

      本文链接:https://www.haomeiwen.com/subject/sxvezxtx.html