一 什么是单例模式
单例模式之所以这么叫,是因为它限制一个类只能有一个实例化对象。经典的实现方式是,创建一个类,这个类包含一个方法,这个方法在没有对象存在的情况下,将会创建一个新的实例对象。如果对象存在,这个方法只是返回这个对象的引用
二 具体实现
python实现单例模式,利用__new__方法来实现每次类实例化对象的时候返回相同的地址引用,这样实现单例模式.其中为了防止__init__多次初始化,设计了一个instance_flag来判断是否初始化了,如果初始化了就直接退出.
# 单例模式
class SingleInstance(object):
# 类属性
instance = None
instance_flag = False
# 重写内置方法__new__(分配对象的内存空间)
def __new__(cls, *args, **kwargs):
if (cls.instance is None):
# 返回分配的内存地址
cls.instance = super().__new__(cls)
return cls.instance
# 初始化的问题
def __init__(self):
if (SingleInstance.instance_flag) :
return
# 初始化逻辑
SingleInstance.instance_flag = True
p1 = SingleInstance()
p2 = SingleInstance()
print(p1)
print(p2)