# 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("&
Python面向对象(多个对象)实现单例的方法+__init__实现只返回一次的方法
最新推荐文章于 2022-05-11 09:31:45 发布
本文介绍了Python中单例模式的概念和原理,强调其在面向对象编程中的作用,即限制类只能创建一个实例。文章详细讲解了如何通过改造`__new__`方法来实现单例,并进一步升级通过`__init__`确保每次初始化返回相同的对象,从而有效节约内存。
摘要由CSDN通过智能技术生成