单例设计模式
class Test(object):
#用来记录第一个被创建对象的引用
instance=None
#记录对象是否初始化,默认为False
flag=False
#重写父类(object)的方法
def __new__(cls, *args, **kwargs):
#判断类属性是否为空对象
if cls.instance is None:
#若是,调用父类的方法,为第一个对象分配空间
cls.instance=super().__new__(cls)
#若不是,返回类属性所保存的对象引用
return cls.instance
def __init__(self):
#判断对象是否初始化
if self.flag:
#是,就返回
return
#不是,为其初始化
print("初始化对象")
self.flag=True
#创建多个实例对象
test1=Test()
test2=Test()
print(test1)
print(test2)
运行结果:
虽然创建了两个实例对象,但这个两个对象的地址是一样的,因此这两个对象实际上是同一个,并且对象的初始化也只初始化了一次,这样就实现了python的单例设计模式,永远只创建一个实例对象。