介紹幾種python實現單例的方法

2021-08-18 22:29:25 字數 1061 閱讀 9973

實現單例的方法可以有很多種,但他們的原理都是相通的,即當第二次再去建立物件的時候都會返回第一次所建立的物件

第一種:使用裝飾器

第一次建立myclass的例項物件時,字典instances為空,將會返回乙個物件,並且該物件的引用也將儲存到instances裡面,

當再次建立物件的時候則會返回第一次建立的物件,從而實現了單例

def singleton(cls, *args, **kw):

instances = {}

def getinstance():

if cls not in instances:

instances[cls] = cls(*args, **kw)

return instances[cls]

return getinstance

@singleton

class myclass(object):

pass

第二種:使用__new__方法

所有的類建立物件的時候都必須實現object中__new__,我們可以才實現object中__new__方法的前面加個條件判斷,沒有例項物件的時候才會呼叫object中的__new__方法,否則直接返回第乙個例項物件

class myclsass(object):

instance = none

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

if not cls.instance:

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

return cls.instance

第三種:使用模組匯入    請看下面偽**,匯入singleton.py中的乙個物件obj,其中obj就是乙個單例

# singleton.py

class singleton(object):

pass

obj = singleton()

# test.py

from singleton import obj

python實現單例的幾種方法

單例模式,顧名思義就是乙個類只有乙個例項,這樣可以避免例項化多次浪費空間,而且避免同時操作乙個物件時可能出現不同步的問題。其核心結構中只包含乙個被稱為單例類的特殊類,類的物件只能存在乙個。面試題中經常被問題,先把常用的實現單例模式的方法總結如下 將例項繫結到類變數 instance中,有的話直接返回...

python單例模式的幾種實現方式

單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。實現單例模式的幾種方法 1.使用模組 其實,python的模組就是天然的單例模式,因為模組在第一次匯入的時候,...

關於幾種單例模式的介紹

關於單例模式,需要解決三個方面的問題 1 執行緒安全問題。2 效能問題。3 懶載入 資源占有問題 關於下面幾種方式的缺點,除了dcl,holder和列舉單例模式其他只做簡單描述,具體可自行了解。public class lazy public synchronized static lazy get...