python单例模式实现,python单例模式连接数据库

  python单例模式实现,python单例模式连接数据库

  仅用于研究参考。

  目标

  Python 01中的单例设计模式__new__ method单例。单案例设计模式设计模式设计模式是对前期工作的总结和提炼。通常,人们广为流传的设计模式是针对某个特定问题的成熟解决方案。设计模式用于重用代码,使其他人更容易理解,并确保代码的可靠性。单例设计模式目的3354对象由类创建,系统中只有一个实例。每次执行类名()返回的对象时,内存地址都是相同的单实例设计模式。应用场景音乐播放对象回收站对象打印机对象数据库访问对象02。__new__方法当创建一个类名为()的对象时,Python的解释器会首先调用__new__方法为对象分配空间。__new__是object基类提供的内置静态方法,主要有两个作用:在内存中为对象分配空间,返回对象的引用。Python的解释器得到对象的引用后,把引用作为第一个参数,传递给__init__方法重写__new__方法的代码非常固定!

  如果重写__new__方法,则必须返回super()。__new__(cls) *否则Python的解释器不会调用对象的初始化方法。注意:__new__是一个静态方法,调用时需要主动传递cls参数。

  示例代码

  类MusicPlayer(对象):

  def __new__(cls,*args,**kwargs):

  #如果没有返回结果,

  返回super()。__新__(cls)

  def __init__(self):

  打印(“初始化音乐播放对象”)

  player=MusicPlayer()

  打印(播放器)03。Python 3354中的单实例由类创建的对象在系统中只有一个实例。

  定义一个class属性,初始值为None,用来记录singleton对象的引用。重写__new__方法。如果class属性为None,则调用父类方法来分配空间,并将结果记录在class属性中。返回记录在class属性中的对象引用。

  类MusicPlayer(对象):

  #定义类属性以记录单例对象引用

  实例=无

  def __new__(cls,*args,**kwargs):

  # 1.确定是否已经分配了类属性。

  如果cls.instance为None:

  cls.instance=super()。__新__(cls)

  # 2.返回类属性的单个实例引用

  Return cls.instance仅执行一次初始化。每次用类名()创建对象,Python的解释器都会自动调用两个方法:_ _ new _ _ allocate space _ _ init _ _ object初始化。在前一节中修改了__new__方法之后,每次都会引用第一个创建的对象。但是,初始化方法将被再次调用。

  让初始化操作只执行一次

  解决方法:定义一个类属性init_flag是否已经初始化,初始值为False。在__init__方法中,判断init_flag,如果为False,则执行初始化动作,然后将init_flag设置为True。当__init__方法再次被自动调用时,初始化操作将不会用MusicPlayer(object)类再次执行:

  #记录第一个创建对象的引用

  实例=无

  #记录初始化动作是否已经执行。

  init_flag=False

  def __new__(cls,*args,**kwargs):

  # 1.确定类属性是否为空对象。

  如果cls.instance为None:

  # 2.调用父类的方法为第一个对象分配空间

  cls.instance=super()。__新__(cls)

  # 3.返回由class属性保存的对象引用

  返回cls.instance

  def __init__(self):

  如果不是MusicPlayer.init_flag:

  打印(“初始化音乐播放器”)

  MusicPlayer.init_flag=True

  #创建多个对象

  player1=音乐播放器()

  打印(播放器1)

  播放器2=音乐播放器()

  打印(播放器2)

  关注微信微信官方账号,回复【数据】,Python,PHP,JAVA,web,即可获取Python,PHP,JAVA,前端等视频数据。

  来自海洋的渔夫原创作品,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: