裝飾器是不改變原有功能的情況下新增新的功能,感覺就是***吧!粗熟理解,不喜勿噴,
而且還不改變原有**的情況下哦
def log(func):
print('call %s():'% func.__name__)
return func(*args, **kwargs)
@log
def now():
print('2015-3-25')
本質就是一行**,我每次搞不清思路時,都是用這麼一行**來思考的
now = log(now)
這就是本質,如果裡面還有巢狀函式,無非就是多加個括號
不懂好好回頭看看廖大的部落格把
python中裝飾器的六種形態,有點變形金剛的感覺,有點自嗨
_instance = {}
def _singleton(*args, **kargs):
if cls not in _instance:
_instance[cls] = cls(*args, **kargs)
return _instance[cls]
return _singleton
class a(object):
a = 1
def __init__(self, x=0):
self.x = x
c = singleton(cls=a)
z = c(1)
y = c(2)
print(id(z))
print(id(y))
總結下問題也算是一種積累和成長把,在我的第乙份工作和任務中,
解決乙個執行緒冗餘問題,開始本地跑不了,連debug都不行,著實讓我難受了好一陣子,
好不容易本地能跑了,還是繼續蒙蔽,多執行緒,debug還是沒卵用,上面是原理把,
後來自己一直各種蒙,各種改,多執行緒和多程序看了,發現壓根就沒問題,看了感覺
乙個檔案用了遞迴,感覺問題可能就在這裡,遞迴呼叫出現的執行緒問題就在這,然後也是瞎改,隨便抄著改了一下,就好了,那真的叫開心啊,然後看了下python的單例模式,發現我還是太淺薄了,只知道自己最簡單的單例模式,後來看到裝飾器,也行,但這個原理記得不是很清楚,畢竟要改寫嘛,琢磨了單例裝飾器的原理,然後就寫了這篇部落格。
裝飾器實現單例模式
用裝飾器實現單例模式,應該算乙個很不錯的例子。我們知道,python中裝飾器無非是對物件的重新包裝,這個物件可以是函式,也可以是乙個類 decorate def test 相當於 test decorate test def decorate func def wrap args,kwargs re...
函式裝飾器和類裝飾器實現單例類
單例類,指的是這個類只能建立乙個例項,建立完成後,其他類例項都無法再建立。今天我們來看一下,使用函式裝飾器和類裝飾器怎麼實現這種特殊一點的類。裝飾器算是類裡面比較難的內容之一,但是實際上它的思想並不複雜。簡單點說,就是在你原來內容的基礎上,在外面給你加點東西,實現類似裝飾的效果。但是它是怎麼實現的呢...
裝飾器模式小結
裝飾器模式主要特徵是用特殊的方式給物件新增功能職責,實際上,這個裝飾器跟我們想象的裝飾一棵聖誕樹差不多,但又有不同之處。我的理解是,雖然增加了裝飾物,但是這些裝飾物不是直接add上去的,之前一直被這個概念搞混。因為這種模式是建立在乙個超類的基礎上的,例如下圖的 component,所有其他的類都是這...