#单例 方法
class MusicPlayer(object):
instance=None
# def __new__(cla,*args,**kwargs):
# if cla.instance is None:
# cla.instance=super().__new__(cla)
# return cla.instance
def __init__(self):
print("初始化播放器")
a=MusicPlayer()
b=MusicPlayer()
print(a)
print(b)
print(id(a)==id(b))
#单例 方法2
class MusicPlayer(object):
instance=None
init_flag=False
#这里,刚才的版本写错了,把cls写成cla了,也可以,只要前后一致就行,习惯是cls
def __new__(cls,*args,**kwargs):
if cls.instance is None:
cls.instance=super().__new__(cls)
return cls.instance
def __init__(self):
# 下面cls不行,因为cls此时不是参数,所以需要用类名调用类属性
# if cls.init_flag is False:
# print("初始化播放器")
# cls.init_flag=True
if MusicPlayer.init_flag is False:
print("初始化播放器")
MusicPlayer.init_flag=True
a=MusicPlayer()
b=MusicPlayer()
print(a)
print(b)
print(id(a)==id(b))
#***********************************