博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python Singleton(单例模式)实现
阅读量:2397 次
发布时间:2019-05-10

本文共 1139 字,大约阅读时间需要 3 分钟。

1. 重载__new__方法

class Singleton(object):    def __new__(cls, *args, **kwargs):        ''' A pythonic singleton '''        if '_inst' not in vars(cls):            cls._inst = super().__new__(cls, *args, **kwargs)        return cls._inst    def __init__(self, *args, **kwargs):        pass
2. 使用装饰器

class SingletonDecorator(object):    def __init__(self, cls):        self._cls = cls        self._inst = None    def __call__(self, *args, **kwargs):        ''' Over __call__ method. So the instance of this class        can be called as a function. '''        if not self._inst:            self._inst = self._cls(*args, **kwargs)        return self._instclass DemoCls(object):    passDemoCls = SingletonDecorator(DemoCls)# After this the DemoCls is bind with a SingletonDecorator instancea = DemoCls()b = DemoCls()
3. 利用python管理module的机制

import sysclass MyCls(object):    def __init__(self, *args, **kwargs):        passsys.modules[__name__] = MyCls()# After this statement, the test module is bind with a MyCls instance# If you import this module in other module,# test is a MyCls instance actually.
4. share instance property

   共享 __dict__ 即可。

转载地址:http://qafob.baihongyu.com/

你可能感兴趣的文章
区块链术语解释
查看>>
./configure,make,make install的作用
查看>>
学术论文录用结果通知(Notification)
查看>>
Theorem等数学化的论述
查看>>
使用HttpClient爬取国内疫情数据
查看>>
引用传递和值传递有什么区别
查看>>
C++从入门到放肆!
查看>>
C++是什么?怎么学?学完了能得到什么?
查看>>
初学C语言没有项目练手怎么行,这17个小项目收下不谢
查看>>
学好C语言,你只需要这几句口诀!
查看>>
选择大于努力!0基础学好C语言编程,首先要掌握的是什么?
查看>>
C语言和其他语言的不得不说的差别!
查看>>
夫妻俩在互联网公司工作,年收入曝光,网友:这么高!
查看>>
程序员5年工作经验,因频繁跳槽被面试官压工资!
查看>>
职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
查看>>
@初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
查看>>
C/C++编程笔记:C/C++ 的编译和链接
查看>>
C/C++编程知识分享:C++四种强制转换,教你多种类型转换方式!
查看>>
全球最厉害的 14 位程序员,你知道几位呢?最厉害的研究出了它!
查看>>
C/C++基础语法复习(二):C++ 面向对象编程,你需要知道的点
查看>>