Python基础(九)

Python基础(九)

1、单例设计模式

1.1、new方法

new方法的作用是,创建并返回一个实例对象,如果new只调用了一次,就会得到一个对象。继承自object的新式类才有new这一魔法方法。

1.2、注意点

  • new是在一个对象实例化的时候所调用的第一个方法
  • new至少必须要有一个参数cls, 代表要实例化的类, 此参数在实例化时由Python解释器自动提供, 其他的参数是用来直接传递给init方法
  • new决定是否要使用该init方法, 因为new可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果new没有返回实例对象, 则init不会被调用
  • 在new方法中, 不能调用自己的new方法

1.3、示例

class people:
    __age = 18  # 私有属性

    def __init__(self):
        self.__name = '张三'  # 私有属性
        self.height = 178

    # 不做重写的话默认的new方法
    def __new__(cls, *args, **kwargs):
        return object.__new__(cls)

2、单例模式

2.1、简介

将类在实例化时,指向同一个内存地址,称之为单例模式 。也就是无论创建多少次这个类的对象,都会指向那么唯一的一个实例。

2.2、使用new方法实现

class people:
    __age = 18  # 私有属性

    def __init__(self):
        self.__name = '张三'  # 私有属性
        self.height = 178

    # 不做重写的话默认的new方法
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):  # 不存在_instance属性就创建一个
            cls._instance = object.__new__(cls)  # _instance赋值为一个对象开辟一个内存空间
        return cls._instance


p1 = people()
print(id(p1))
p2 = people()
print(id(p2))
p3 = people()
print(id(p3))
p4 = people()
print(id(p4))

2、小结

  • 单例设计模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值