單例模式:保證系統中乙個類只有乙個例項而且該例項利於外界訪問。
下面是python實現單例模式的一種方式。
"""
這裡用了重寫new方法來實現單例模式。
在python中__new__方法是乙個靜態方法
它在物件被建立時呼叫,為物件分配空間,
並且返回乙個位址傳給__ init__方法
__new__方法的第乙個引數是表示當前類。
"""class demo(object):
#1定義乙個變數,用來記錄__new__方法返回的第乙個位址值
first_address = none
#(1)用乙個變數記錄__init__內容是否已經執行過
label = false
#2重寫__new__方法
def __new__(cls,*args,**kwargs):
#判斷如果是第一次就給物件分配乙個空間,並且記錄它的引用
#如果不是第一次,就返回第一次記錄的引用
if cls.first_address is none:
cls.first_address = super().__new__(cls)
return cls.first_address
#(2)__init__方法的寫法
def __init__(self,attribute_value):
#判斷是否初始化了例項屬性,如果沒有就初始化例項屬性,否則直接結束方法
if demo.label:
return
self.attribute = attribute_value
demo.label = true
def test(self):
print(self.attribute)
a1 = demo("a1")
print(a1)
a2 = demo("a2")
print(a2)
a1.test()
a2.test()
在 Python 中實現單例模式
cyrusin.github.io 2015 09 15 python singleton 20150915 有些時候你的專案中難免需要一些全域性唯一的物件,這些物件大多是一些工具性的東西,在python中實現單例模式並不是什麼難事。以下總結幾種方法 使用類裝飾器 使用裝飾器實現單例類的時候,類本身...
Python中單例模式的實現方式
在 python 中,我們可以用多種方法來實現單例模式 使用模組 其實,python 的模組就是天然的單例模式,因為模組在第一次匯入時,會生成.pyc檔案,當第二次匯入時,就會直接載入.pyc檔案,而不會再次執行模組 因此,我們只需把相關的函式和資料定義在乙個模組中,就可以獲得乙個單例物件了。如果我...
python實現單例模式
最近在寫乙個連線池,而連線池管理類不可避免的需要使用單例來保證所有使用者在取得連線時取到的一定是同乙個管理物件。故將此模式取來研究一番。保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 設計模式 單例模式是全域性只有乙個訪問點,故對於乙個類來說,任何例項化後訪問到的都應該是同樣的物件。而也有另...