python-----单例设计模式

本文详细介绍了Python中的设计模式,特别是单例设计模式。单例模式确保类只有一个实例,并提供全局访问点。通过重写`__new__()`方法,确保在多次调用时返回相同对象引用。代码示例展示了如何实现单例,并通过实例验证了其效果。
摘要由CSDN通过智能技术生成

代码笔记-----------

"""
什么是设计模式?  设计模式是前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是都是针对某一特定问题的成熟解决方案
设计模式有什么作用?  使用设计模式是为了可重用代码、让代码更容易被他人理解,提高代码的可靠性

什么是单例设计模式? 让类创建的对象,在系统中只有唯一的实例。每一次使用类名()创建实例对象,内存地址是相同的

咱们要用到单例设计模式就得用到一个内置方法__new__()
在我们类名创建对象时,python解释器首先会调用__new__()方法,来为对象分配空间
__new__()是一个有Object基类提供的内置静态方法主要作用有两个:
1、在内存为实例对象分配空间
2、返回实例对象的引用
python解释器在获得对象的引用后,将引用作为对象的第一个参数传给__init__()方法
咱们因为__new__()方法是Object基类的内置方法,所以咱们使用__new__()方法,是重写的Object的方法,重写__new__()方法的代码非常固定
重写__new__()方法一定要return super().__new__(cls)返回对象的引用,否则python解释器得不到分配了空间的对象引用,就不会调用对象的初始化方法
注意:__new__()是一个静态方法,在调用需要主动传递cls参数
"""
class A:
    new=None #记录第一个对象的引用
    def __new__(cls, *args, **kwargs):
        print("这是new方法")
        if cls.new is None: #判断类属性new是否为None,是则第一个对象还没创建,需要给了new赋值第一次对象的引用;否则不是第一次对象创建了,就可以直接返回第一次对象的引用
            cls.new=super().__new__(cls) #对象为None时,给new赋值第一次对象的引用

        return cls.new #赋值成功后,就返回对象的引用

    def __init__(self,name,age):
        self.name=name
        self.age=age

    def show(self):
        print("%s , %d" % (self.name, self.age))

"""主程序"""
a=A("老王",60)
a.show()
print(a)

b=A("小美",18)
b.show()
print(b)

运行结果-------------

 我们发现两个对象的内存地址的引用是一样的,这就是单例!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值