当前位置: 首页 > 图灵资讯 > 行业资讯> Python中如何使用_new_实现单例模式

Python中如何使用_new_实现单例模式

发布时间:2025-10-22 21:25:41

单例模式是一种经典的设计模式。简而言之,一种单例模式只能实例化一次,实例变量在第一次实例化时已经固定。

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

Python实现单例模式

代码如下:

classMyClass:
_instance=None
_first_init=False
def__new__(cls,*args,**kwargs):
ifnotcls._instance:
cls._instance=super().__new__(cls)
returncls._instance
def__init__(self,var1,var2:
cls=type(self)
ifnotcls._first_init:
self.var1=var1
self.var2=var2
cls._first_init=True

如上所示,我创建了一个MyClass类,定义了两个类变量,第一个是_instance,它负责保存这种创造的例子。二是_first_init,它是一个布尔值,是否保存为第一个实例类。

相关推荐:Python视频教程

在__new________________________________________________________.__new__(cls)创建实例,即调用父类object.__new__(MyClass)创建实例。

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

运行效果

让我们创建两个例子进行比较

>>>instance1=MyClass(1,2)
>>>instance2=MyClass(7,5)
>>>id(instance1)==id(instance2)
True
>>>instance2.var1
1

可以看出,这两个例子的内存地址是相同的,第一个例子后变量已经固定,整体情况不会改变。

这就是单例模式的实现。

相关推荐:

Python等方法new_______________init__方法介绍

相关文章

Python中如何使用_new_实现单例模式

Python中如何使用_new_实现单例模式

2025-10-22
python生成器中的send()方法和next()方法

python生成器中的send()方法和next()方法

2025-10-22
Python转义字符及用法

Python转义字符及用法

2025-10-22
Python中的迭代器是什么

Python中的迭代器是什么

2025-10-22
什么是Python中的闭包

什么是Python中的闭包

2025-10-22
Python变量及其使用

Python变量及其使用

2025-10-22