Python中的单例模式详解

 

什么是单例模式

        单例是一种设计模式(单例模式,工厂模式,轮询模式)

        代表一个类只能创建出一个对象

        类似于win中的回收站等设计

__new__函数

        python中object为所有类的父类 一切皆对象
 # 创建对象的方法 __new__
    def __new__(cls):  # 子类中重写了 父类方法

        # 调用父类的__new__ 创建对象

        return object.__new__(cls)  # 创建出一个对象

    def __init__(self):

        print("__init__函数")

    单例模式代码实现

        在创建对象的时候,进行判断. 如果创建过对象,那我就不创建了

        如果没有创建过对象.调用父类的 object.__new__(cls)来创建对象
class Single(object):
    # 定义一个属性 用来记录是否创建过对象
    # 在变量的前面添加__ 表示这个属性是私有属性
    # 只能在类的内部使用, 不能够在类的外部使用
    __instance = None # 第一次置为None

    # 重写__new__方法 在创建对象的时间 调用我们写的new方法
    def __new__(cls):  # cls值类class
        # 创建对象 object.__new__(cls)
        if cls.__instance is None: # 判读是否为None

            # 创建对象
            cls.__instance = object.__new__(cls)

        return cls.__instance
a = Single()
b = Single()

# 以下输出结果一样
# id()函数返回对象的唯一标识符,标识符是一个整数
# Python中的所有对象都有其自己的唯一ID
print("id(a) :", id(a))
print("id(b) :", id(b))

        运行结果(pycharm调试):                9ead38c43d644734ada85cb5232574c4.png

        code 0 结束 程序正常退出

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值