25 面向对象8: 单实例模式
"""
类中只有一个对象
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)