python中以最少的代码实现单例模式(重写new方法)

作者:小白jiang

第一点:单例模式是什么?
答:单例模式,就是确保一个类中只有一个实例存在。像python的模块就是天然的单例模式,因为模块在第一次导入的时候,会生成.pyc文件,当第二次导入的时候,就会直接加载.pyc文件,而不会再执行模块代码。
单例模式也是一种设计模式
第二点:重写new方法实现单例模式?

这里,就举个地球的例子,因为只有一个地球,不管实例化几次,都应该是相同的一个,所以写地球这个类的时候,需要用单例模式的设计思想。

class Earth(object):

    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, 'instance'):
            cls.instance = super().__new__(cls)
        return cls.instance

    def __init__(self):
        self. name = '地球'
        
# 第一次实例化
a = Earth()
print(id(a))

# 第二次实例化
b = Earth()
print(id(b))

结果

30943944
30943944

发现两次实例的对象的id一样,说明只存在一个实例。

个人网站:www.nihao070.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白蒋博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值