Python 知識要點 單例

2022-08-16 15:51:07 字數 1339 閱讀 1381

【設計模式】

【單例設計模式】

【__new__方法】

class

musicplayer(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 引數

【單例步驟】

class

musicplayer(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()

print

(player1)

player2 =musicplayer()

print(player2)

單例模式要點 例項

好像帶 單 字的 design pattern 翻譯只有乙個 單件模式 singleton 通俗的講 我所看到的 單身模式 的解釋是指只有乙個例項的類。與你們所說的只有生成唯一靜態例項是一樣的吧。主要 是這樣的,以下都是在類的內部,假設類名是 a 複製內容到剪貼簿 private a instanc...

python 單例 Python單例

01.單例設計模式 設計模式 設計模式 是 前人工作的總結和提煉,通常,被人們廣泛流傳的設計模式都是針對 某一特定問題 的成熟的解決方案 使用 設計模式 是為了可重用 讓 更容易被他人理解 保證 可靠性 單例設計模式 目的 讓 類 建立的物件,在系統中 只有 唯一的乙個例項 每一次執行 類名 返回的...

Python知識要點

python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。官方對 python 的介紹如下 python 是一款易於學習且功能強大的程式語言。它具有高...