美文网首页python你应该知道
python中实现单例模式的几种方法

python中实现单例模式的几种方法

作者: 斑纹长颈鹿 | 来源:发表于2017-12-09 21:30 被阅读0次

1.装饰器


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

@singleton
class MyClass:
    def __init__(self,s):
        self.s = s

a = MyClass('apple')
b = MyClass('banana')

print(a.s)
print(b.s)
输出:
apple
apple

当一个类名不在字典内时,创建这个类的实例并作为值对应类名这个键,创建一个键值对在 instances 字典内,以后创建这个类的实例时,因为类名已存在,返回的还是第一次创建的类的实例。

2.模块

python中的模块module在程序中只被加载一次,本身就是单例的。

# mysingleton.py
class My_Singleton(object):
    def foo(self):
        pass

my_singleton = My_Singleton()

# to use
from mysingleton import my_singleton

my_singleton.foo()

3. __new__()

class Singleton(object):
    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Singleton,cls).__new__(cls)
        return cls._instance

class MyClass(Singleton):
    def __init__(self,s):
            self.s = s
a = MyClass('apple')
b = MyClass('banana')
输出都是 banana

通过__new__方法,将类的实例在创建的时候绑定到类属性 _instance上。如果 cls._instanceNone,说明类还未实例化,实例化并将实例绑定到 cls._instance,以后每次实例化的时候都返回第一次实例化创建的实例。

以上是我了解的方法,如果还有其他方法可以告知我,我来加上去

相关文章

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

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

  • python 的单例模式

    python设计模式中的 单例模式:单例模式可以通过__new__ 方法实现,而__new__ 方法一般用于继承不...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • java中实现单例模式的几种方式?

    java中实现单例模式的几种方式?

  • python 单例模式

    单例模式 Singleton 网上搜索python 单例模式,实现方式大致有一下几种方式: 以模块导入的方式 使用...

  • python面试题2

    python对象创建的过程python实现单例的几种方法@classmethod, @staticmethod用生...

  • Java 单例模式

    线程安全的单例模式的几种实现方法分享线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅 饿汉式 借助内部类...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

网友评论

    本文标题:python中实现单例模式的几种方法

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