python单例模式是什么,python中new方法怎么用

  python单例模式是什么,python中new方法怎么用

  单一模式是一种经典的设计模式。简单来说,类的单例模式就是只能实例化一次,实例变量在第一次实例化时是固定的。

  Python中常见的单例模式没有,这是典型的设计。通常,if xxx is None或if xxx is not None用于比较运算。

  Python实现单例模式

  代码如下:

  classMyClass:

  _ instance=无

  _first_init=False

  def__new__(cls,*args,**kwargs):

  ifnotcls。_instance:

  cls。_instance=super()。__新__(cls)

  returncls。_实例

  def__init__(self,var1,var2):

  cls=类型(自身)

  ifnotcls。_first_init:

  self.var1=var1

  self.var2=var2

  Cls。_first_init=True如上所示,我创建了一个MyClass的类,并定义了两个类变量。第一个是_instance,负责保存这个类创建的实例。第二个是_first_init,它是一个布尔值,保存这个类是否是第一次实例化。

  相关:《Python视频教程》

  在__new__ method(构造函数)中,判断是否存在_instance这样的变量,如果之前已经实例化过,则直接返回。如果是第一次实例化,实例将被绑定到_instance类变量,实例将使用super()创建。__new__(cls),即父类对象。将调用__new__(MyClass)来创建实例。

  在__init__方法(初始化函数)中,我们通过cls=type(self)获取MyClass类来判断它是否是第一次实例化。如果是第一次实例化,绑定实例变量。否则,什么都不做。

  运行效果

  让我们创建两个例子来比较。

  instance1=MyClass(1,2)

  instance2=MyClass(7,5)

  id(实例1)==id(实例2)

  真实的

  实例2.var1

  1可以看出,这两个实例的内存地址是相同的,变量在第一次实例化之后就已经固定了,所以全局情况不会再发生变化。

  这是singleton模式的实现。

  相关建议:

  类似Python的方法、__new__方法和__init__方法简介

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

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