Python 裝飾器實現單列模式

2022-06-04 05:33:07 字數 861 閱讀 3776

#

使用裝飾器實現單列模式

defsingleton(cls):

#用來存在例項的字典

singleton_instance ={}

#判斷字典中是否例項

ifnot singleton_instance.get(cls.__name__

):

#沒有則建立乙個例項,並存入字典中

singleton_instance[cls.__name__] = cls(*args, **kwargs)

#返回已經建立的例項

return singleton_instance[cls.__name__

]

return

@singleton

class

a(object):

def__init__

(self):

print("

__init__")

deftest(self):

print("

test")

print

(a)

print

(id(a()))

print

(id(a()))

a().test()

輸出__init__

2337533963008

2337533963008test

總結:1、定義乙個裝飾器,在裝飾器內部返回乙個該類的物件皆可(如果已經有了,則返回之前建立的,所有需要乙個字典來儲存)

2、類被裝飾器裝飾以後,其型別已經被更改為 function 型別了

說明:cls.__name__ 可以任意命名,保持一致即可

python單列模式 Python單列模式

實現單例模式的幾種方式 1.使用模組 2.使用裝飾器 3.使用類 4.基於 new 方法實現 推薦使用,方便 5.基於metaclass方式實現 單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出...

python單列模式

單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例...

python裝飾器實現單例模式

基本思想為 1 在裝飾器中新增乙個字典型別的自由變數 instance 2 在閉包中判斷類名是否存在於 instance中,如果不存在則建立乙個類的事例,並講其新增到字典中 如果存在則不進行例項化,直接返回字典中的例項 def singleton cls instance def singleton...