Python单例模式,python中单例模式是什么
Singleton模式可以保证一个类只有一个实例,并提供一个全局访问点。本文介绍了Python中实现singleton模式的四种方式,有需要的可以参考。
简介:singleton模式可以保证一个类只有一个实例,并提供一个全局访问点来访问它。适用性当前类只能有一个实例,客户可以从一个众所周知的访问点访问它,比如数据库、MQ等。
实施模式:
1、通过导入模块。
2.它是由装饰者实现的。
3.它是通过使用类实现的。
4.它由__new__方法实现。
单模块导入的源代码:singleton.py
# -*-编码: utf-8 -*-
# time: 2022/5/17 10:31
# file: singleton.py
#作者:汤姆
#微信官方账号3360玩测开发
类单例(对象):
def __init__(self,name):
self.name=name
定义运行(自身):
打印(自己的名字)
s=Singleton(Tom )
主函数源码:
# -*-编码: utf-8 -*-
# time: 2022/5/17 10:51
# file: test_singleton.py
#作者:汤姆
#微信官方账号3360玩测开发
从单例导入s作为s1
从单例导入s作为s2
#方法一:通过导入模块实现
def show_method_one():
:返回:
打印(s1)
打印(s2)
打印(id(s1))
打印(id(s2))
显示方法之一()
#方法二:通过装饰器实现。
定义单例(cls):
#创建一个字典来保存该类的实例对象。
_instance={}
def _singleton(*args,**kwargs):
#首先确定该类是否有对象。
如果cls不在_instance:中
_ instance [cls]=cls (* args,* * kwargs) #创建一个对象并将其保存在字典中。
#返回实例对象
返回实例[cls]
return _ singleton
@单身
Demo2类(对象):
a=1
def __init__(self,x=0):
self.x=x
a1=Demo2(1)
a2=Demo2(2)
打印(id(a1))
打印(id(a2))
#方法三:使用类实现
Demo3类(对象):
#静态变量
_instance=无
_flag=False
def __new__(cls,*args,**kwargs):
如果cls。_instance是None:
cls。_instance=super()。__新__(cls)
返回cls。_实例
def __init__(self):
如果不是Demo3。_flag:
演示3。_flag=True
b1=Demo3()
b2=Demo3()
打印(id(b1))
打印(id(b2))
#方法四:通过__new__方法实现
Demo4:类
def __new__(cls,*args,**kwargs):
如果不是hasattr(cls, _instance):
cls。_instance=super(Demo4,cls)。__新__(cls)
返回cls。_实例
c1=Demo4()
c2=Demo4()
打印(id(c1))
打印(id(c2))
运行结果:
关于Python中实现singleton模式的四种方法的详细解释,本文到此结束。有关Python singleton模式的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。