单例-初始化动作只执行一次
生活随笔
收集整理的這篇文章主要介紹了
单例-初始化动作只执行一次
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
class MusicPlayer(object):# 記錄第一個(gè)被創(chuàng)建對(duì)象的引用instance = None# 記錄是否執(zhí)行過(guò)初始化動(dòng)作init_flag = Falsedef __new__(cls, *args, **kwargs):# 1. 判斷類屬性是否是空對(duì)象if cls.instance is None:# 2. 調(diào)用父類的方法,為第一個(gè)對(duì)象分配空間cls.instance = super().__new__(cls)# 3. 返回類屬性保存的對(duì)象引用return cls.instancedef __init__(self):# 1. 判斷是否執(zhí)行過(guò)初始化動(dòng)作if MusicPlayer.init_flag:return# 2. 如果沒(méi)有執(zhí)行過(guò),在執(zhí)行初始化動(dòng)作print("初始化播放器")# 3. 修改類屬性的標(biāo)記MusicPlayer.init_flag = True# 創(chuàng)建多個(gè)對(duì)象
player1 = MusicPlayer()
print(player1)player2 = MusicPlayer()
print(player2)
?
總結(jié)
以上是生活随笔為你收集整理的单例-初始化动作只执行一次的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 单例-单例设计模式代码实现
- 下一篇: 异常-简单的异常捕获