單例模式(Singleton Pattern)是一種常用的軟體設計模式,此模式的主要目的是確保某一個類別只有一個實例存在。當你希望在整個系統中,某個類別只能出現一個實例時,單例物件就能派上用場。
在Python中,我們可以用多種方法來實作單例模式(推薦學習:Python影片教學)
其實,Python的模組就是天然的單例模式,因為模組在第一次導入時,會產生 .pyc 文件,當第二次導入時,就會直接載入 .pyc 文件,而不會再次執行模組程式碼。因此,我們只要把相關的函數和資料定義在一個模組中,就可以獲得一個單例物件了。
使用裝飾器
def Singleton(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singleton class A(object): a = 1 def __init__(self, x=0): self.x = x a1 = A(2) a2 = A(3)
#使用類,當我們實作單例時,為了保證線程安全需要在內部加入鎖定
我們知道,當我們實例化一個物件時,是先執行了類別的__new__方法(我們沒寫時,預設呼叫object.__new__),實例化物件;然後再執行類別的__init__方法,對這個物件初始化,所有我們可以基於這個,實作單例模式
使用__metaclass__(元類別)
更多Python相關技術文章,請造訪Python教學欄位進行學習!
以上是python怎麼實作單例的詳細內容。更多資訊請關注PHP中文網其他相關文章!