Python面向对象(多个对象)实现单例的方法+__init__实现只返回一次的方法

本文介绍了Python中单例模式的概念和原理,强调其在面向对象编程中的作用,即限制类只能创建一个实例。文章详细讲解了如何通过改造`__new__`方法来实现单例,并进一步升级通过`__init__`确保每次初始化返回相同的对象,从而有效节约内存。
摘要由CSDN通过智能技术生成

在这里插入图片描述

# by Quark专注与逻辑
  
 
class MusicPlayer(object):
   '''
   返回单个 实例
   并且让初始化方法返回一次
   '''
	cls_instance = None  #设置单例的判断
    # 在Python中,None、空列表[]、
    # 空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False
    in_it = False
    num_1 = 0

    def __new__(cls, *args, **kwargs):
    		"""
    		实现单例
    		"""

       if cls.cls_instance is None:  # 初次条件的判断,可以通过调试去理解
            cls.cls_instance = super().__new__(cls) # 继承object类的__new__方法
       return cls.cls_instance  # 让第二个对象返回原有的内存地址

    def __init__(self):
       	# print(self.in_it)
        # 第一个对象时是False
        # 第二个对象时就变成了 True
        # 因为它不为空了
        # 除此之外的其它对象都会被转化成True。
        if self.in_it:
            return
        
        # 测试用于验证是否返回同一个__init_方法
        # print("初始化。。。。")
        self.num_1 += 1
        print("&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值