【設計模式】
【單例設計模式】
【__new__方法】
classmusicplayer(object):
def__new__(cls, *args, **kwargs):
#1.建立物件時,new方法會被自動呼叫
print("
建立物件,分配空間")
#2.為物件分配空間,用變數接收返回,記錄結果
instance = super().__new__
(cls)
#3.返回物件的引用
return
instance
def__init__
(self):
print("")
#player =musicplayer()
print(player)
重寫 __new__ 一定要 return super().__new__(cls)
否則python的直譯器得不到分配了空間的物件引用,就不會呼叫物件的初始化方法。
注意:__new__是乙個靜態方法,在呼叫時需要主動傳遞 cls 引數
【單例步驟】
classmusicplayer(object):
#定義個類屬性,記錄第乙個被建立物件的引用
instance =none
#只執行一次初始化工作
#定義乙個類屬性,標記是否執行過初始化動作,初始值false
init_flag =false
def__new__(cls, *args, **kwargs):
#1.判斷類屬性是否i是空物件
if cls.instance is
none:
#2.呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__
(cls)
#3.返回類屬性儲存的物件引用
return
cls.instance
def__init__
(self):
#1.判斷是否執行過初始化動作
ifmusicplayer.init_flag:
return
#2.如果沒有執行過,在執行初始化動作
print("")
#3. 修改類屬性的標記
musicplayer.init_flag =true
#建立多個物件
player1 =musicplayer()
(player1)
player2 =musicplayer()
print(player2)
單例模式要點 例項
好像帶 單 字的 design pattern 翻譯只有乙個 單件模式 singleton 通俗的講 我所看到的 單身模式 的解釋是指只有乙個例項的類。與你們所說的只有生成唯一靜態例項是一樣的吧。主要 是這樣的,以下都是在類的內部,假設類名是 a 複製內容到剪貼簿 private a instanc...
python 單例 Python單例
01.單例設計模式 設計模式 設計模式 是 前人工作的總結和提煉,通常,被人們廣泛流傳的設計模式都是針對 某一特定問題 的成熟的解決方案 使用 設計模式 是為了可重用 讓 更容易被他人理解 保證 可靠性 單例設計模式 目的 讓 類 建立的物件,在系統中 只有 唯一的乙個例項 每一次執行 類名 返回的...
Python知識要點
python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。官方對 python 的介紹如下 python 是一款易於學習且功能強大的程式語言。它具有高...