"""
类中只有一个对象
1 重写new方法 只初始化一次内存
2 设置标志位,使init 在多次被执行时,实际代码只被执行一次
"""
class MusicPlayer(object):
instance=None #初始没有对象, 定义类的instance属性,设为空
# new是object类内置的分配内存方法
#返回的是地址,给init 方法使用
def __new__(cls, *args, **kwargs):
if cls.instance is None: #如果类属性是空对象
cls.instance = super().__new__(cls) # 调用父类new方法,参数为本类,为第一个对象分配内存
return cls.instance #返回
#设置init 标志
if_init = False
def __init__(self):
if MusicPlayer.if_init==True: #如果已经被初始化过,直接返回
return
else :
print("播放器初始完成") #模拟的实际的初始化
MusicPlayer.if_init = 1
player1=MusicPlayer()
player2=MusicPlayer()
print(player1)
print(player2)