Python中單例設計模式

2021-08-07 18:45:09 字數 885 閱讀 5139

class singleton(object):

"""注釋"""

__instanc=none

def __init__(self,name,age):

self.name=name

self.age=age

def __new__(cls, name, age):

"""建立乙個單例的物件"""

#建立乙個__instance用來儲存第一次建立的物件引用

#如果是第一次建立,那麼進行父類的呼叫來建立乙個物件引用

#如果是第二次建立,那麼就返回上一次建立好的物件引用給他

#所以他們公用的同一類的屬性

if not cls.__instanc:

cls.__instanc=object.__new__(cls)

return cls.__instanc

a=singleton("modou",19)

b=singleton("lili",18)

print(id(a))

print(id(b))

b.addr="河南"

print(a.age)

print(a.name)

print(a.addr)

執行結果是
這時就能發現,兩次建立的例項物件的id值是一樣的,id值一樣的話那麼代表指向的是同乙個物件。所以裡面的資料都是公用的
這就是為什麼明明在a例項物件中定義了name和age的引用值,但是確實b的值。因為python中一切都是賦值都是引用。
總結

python設計模式 單例設計模式

樣式一 class musicplayer object instance none 設定類屬性,用來判斷是否有物件得到記憶體空間 init flag false 0表示還沒有初始化 1代表已經初始化 使用內建函式進行空間的分配 def new cls,args,kwargs cls 哪個類呼叫,就...

Python中的單例設計模式

印表機物件 站物件 四 new 方法 在記憶體中為物件分配空間 返回物件的引用 重寫 new 方法的格式非常固定 eg class musicplayer 建立乙個類屬性,記錄第乙個被建立物件的引用 instance none def new cls,args,kwargs 判斷類屬性是否為空 if...

python中的單例設計模式

設計模式 是前人工作的總結和提煉,是對某一問題的成熟的解決方案,使用設計模式是為了可重用 讓 更容易被他人理解和 的可靠性 單例設計模式 a.目的 讓類建立物件,在系統中只有乙個唯一的乙個例項 b.每一次執行類名返回的物件,記憶體位址是相同的 記錄第一次被建立的引用 instance none 重寫...