09 單例設計模式 new

2022-02-20 18:45:22 字數 1000 閱讀 2874

**站物件

印表機物件

。。。

class musicplayer(object):

instance = none #用以接收物件的記憶體位址

init_flag = false #判斷__init__()用以標記函式有沒有被執行過

def __new__(cls, *args, **kwargs):

if cls.instance is none:

cls.instance = super().__new__(cls) # 因為是拓展__new__方法所以必須要執行一次super().__new__,本次執行時建立乙個物件(分配記憶體空間)並返回物件的位址

return cls.instance

# 在單例模式中,一般都會讓init方法只被執行一次

def __init__(self):

if musicplayer.init_flag:

return

musicplayer.init_flag = true

print("被執行了一次")

# 建立多個物件

player1 = musicplayer()

player2 = musicplayer()

# 發現兩個位址不一樣

print(player1)

print(player2)

被執行了一次

<__main__.musicplayer object at 0x0000000001df25b0>

<__main__.musicplayer object at 0x0000000001df25b0>

process finished with exit code 0

請務必檢測單碼是否足夠簡單,如if**可寫為:

if cls.instance is none:

cls.instance = super().__new__(cls)

return cls.instance

單例模式 new

單例模式,使用 new new 是建構函式,init 是初始化方法,先呼叫了 new 返回了例項,init 給這個例項初始化繫結一些屬性。1 class singleton object 23 def new cls,args,kw 4if not hasattr cls,instance 5 cl...

Python 單例模式( new

單例模式 簡單的理解就是乙個類只有乙個例項 參考 繼承自singleton的子類,並且該子類未重寫 new 方法,則該子類為但單例類 class singleton object 使用 new 實現單例 instance none def new cls,args,kwargs if not cls...

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...