单例模型


class MyMetaClass(type):
instance=None
def __call__(cls, *args, **kwargs):
if not MyMetaClass.instance:
#创建一个空对象
MyMetaClass.instance=object.__new__(cls)
print("创建了新的播放器!")
#初始化对象
MyMetaClass.instance.__init__(*args, **kwargs)
#返回该对象
return MyMetaClass.instance

# 只能由一个播放器实例
class CDPlayer(metaclass=MyMetaClass):
def play(self,music):
print("切换音乐",music)
def __init__(self,music_name):
self.music_name=music_name
#两次实例化对象p1和p2 都是一个
p2=CDPlayer('往后余生!908')
p1=CDPlayer('往后余生!')
p1.play('往后余生!')
p2.play("二十五点")
p1.play('离人愁!')
posted @ 2018-11-27 17:14  路口有雾  阅读(106)  评论(0编辑  收藏  举报