使用裝飾器實現python單例模式

2021-09-21 01:21:04 字數 616 閱讀 8762

所謂單例模式就是乙個類只能建立乙個例項化物件,不浪費記憶體,這裡使用裝飾器實現

def singleton(cls):

# 定義例項容器

instances = {}

# 定義巢狀方法

# 判斷裝飾的類是否單例

if cls not in instances:

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

return instances[cls]

有了裝飾器就可以對類進行裝飾

@singleton

class testplot(object):

def __init__(self,plt):

pass

one= testplot(plt)

two = testplot(plt)

print(id(one))

print(id(two ))

# 顯示 id 位址相同 只建立了乙個例項,另乙個只是引用

1181341266664

1181341266664

python使用裝飾器實現單例模式

直接上 第一種使用函式裝飾器實現並且使用鎖保證執行緒安全 不使用鎖實現 def singleinstance cls def new cls,args,kwargs if not hasattr cls,instance cls.instance object.new cls return cls....

python裝飾器實現單例模式

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

Python裝飾器實現單例模式

coding utf 8 使用裝飾器 decorator 這是一種更pythonic,更elegant的方法,單例類本身根本不知道自己是單例的,因為他本身 自己的 並不是單例的 def singleton cls,args,kw instances def singleton if cls not ...