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