"""
    在某些情况下,我们多次创建实例希望指向的是同一个对象,比如回收站,每次用的时候不要创建多个
"""
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)
posted on 2022-04-03 16:23  风中的琥珀  阅读(65)  评论(0)    收藏  举报