Python单例模式,python中单例模式是什么

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: