首頁 >後端開發 >Python教學 >python怎麼實作單例

python怎麼實作單例

(*-*)浩
(*-*)浩原創
2019-06-27 09:28:513427瀏覽

單例模式(Singleton Pattern)是一種常用的軟體設計模式,此模式的主要目的是確保某一個類別只有一個實例存在。當你希望在整個系統中,某個類別只能出現一個實例時,單例物件就能派上用場。

python怎麼實作單例

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn