使用模組
使用__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 一種常見的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存...