Python3之實現單例模式de幾種方式

2021-08-13 11:16:14 字數 1396 閱讀 9457

使用模組

使用__new__

使用裝飾器

使用元類

python 的模組就是天然的單例模式,因為模組在第一次匯入時,會生成 .pyc 檔案,當第二次匯入時,就會直接載入 .pyc 檔案,而不會再次執行模組**。

class

singleton:

def__new__

(cls, *args, **kwargs):

ifnot hasattr(cls, '_instance'):

cls._instance = super().__new__(cls)

return cls._instance

s0 = singleton()

s1 = singleton()

print(id(s0))

print(id(s1))

from functools import wraps

defsingleton

(cls):

instances = {}

@wraps(cls)

defgetinstance

(*args, **kwargs):

if cls not

in instances:

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

return instances

return getinstance

@singleton

class

bar:

pass

b0 = bar()

b1 = bar()

print(id(b0))

print(id(b1))

元類(metaclass)可以控制類的建立過程

class

singleton

(type):

""" 元類繼承type

"""_instance = {}

def__call__

(cls, *args, **kwargs):

if cls not

in cls._instance:

cls._instance[cls] = super().__call__(*args, **kwargs)

return cls._instance

class

bar(metaclass=singleton):

pass

b0 = bar()

b1 = bar()

print(id(b0))

print(id(b1))

python3單例模式

單例模式是某個類在整個系統中只存在乙個例項的一種設計模式。使用單例模式的好處 單例模式不僅可以減少記憶體資源占用,而且因為只初始化一次,還可以加快執行效能。例如當程式通過乙個類來讀取配置資訊,而程式多個地方需要使用配置資訊,這時整個程式執行過程中只需乙個例項物件即可,可減少占用記憶體資源,同時還可以...

Python3 單例模式問題

單例模式,也叫單子模式,是一種常用的軟體設計模式,屬於建立型模式的一種。在應用這個模式時,單例物件的類必須保證只有乙個例項存在。許多時候整個系統只需要擁有乙個的全域性物件,這樣有利於我們協調系統整體的行為。比如在某個伺服器程式中,該伺服器的配置資訊存放在乙個檔案中,這些配置資料由乙個單例物件統一讀取...

python3中的單例模式Singleton

usr bin env python coding utf 8 date 2019 01 21 09 09 09 author cdl 1217096231 qq.com link version id 單例模式singleton 一種常見的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存...