"""
在某些情况下,我们多次创建实例希望指向的是同一个对象,比如回收站,每次用的时候不要创建多个
"""
class Box:
# 定义类属性保存引用
__instance = None
# 定义类属性保存init方法是否执行
__init_flag = False
def __new__(cls, *args, **kwargs):
# 对象初始化的时候自动调用
if cls.__instance is None:
# 调用父类__new__方法创建空间,获取内存地址,保存在类属性
cls.__instance = object.__new__(cls)
return cls.__instance
else:
return cls.__instance
def __init__(self, name):
if Box.__init_flag:
pass
else:
self.name = name
Box.__init_flag = True
b1 = Box("坦克")
print(b1.name)
b2 = Box("大炮")
print(b2.name)