python的单例设计模式

单例设计模式

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的单例设计模式,永远只创建一个实例对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值