栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础(九)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础(九)

Python基础(九)
  • Python基础(九)
  • 1、单例设计模式
    • 1.1、new方法
    • 1.2、注意点
    • 1.3、示例
    • 2、单例模式
    • 2.1、简介
    • 2.2、使用new方法实现
  • 2、小结

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、小结
  • 单例设计模式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号