色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python如何解除一個(gè)裝飾器

瀏覽:2日期:2022-07-14 16:50:50

問(wèn)題

一個(gè)裝飾器已經(jīng)作用在一個(gè)函數(shù)上,你想撤銷它,直接訪問(wèn)原始的未包裝的那個(gè)函數(shù)。

解決方案

假設(shè)裝飾器是通過(guò) @wraps 來(lái)實(shí)現(xiàn)的,那么你可以通過(guò)訪問(wèn) __wrapped__ 屬性來(lái)訪問(wèn)原始函數(shù):

>>> @somedecorator>>> def add(x, y):... return x + y...>>> orig_add = add.__wrapped__>>> orig_add(3, 4)7>>>

討論

直接訪問(wèn)未包裝的原始函數(shù)在調(diào)試、內(nèi)省和其他函數(shù)操作時(shí)是很有用的。 但是我們這里的方案僅僅適用于在包裝器中正確使用了 @wraps 或者直接設(shè)置了 __wrapped__ 屬性的情況。

如果有多個(gè)包裝器,那么訪問(wèn) __wrapped__ 屬性的行為是不可預(yù)知的,應(yīng)該避免這樣做。 在Python3.3中,它會(huì)略過(guò)所有的包裝層,比如,假如你有如下的代碼:

from functools import wrapsdef decorator1(func): @wraps(func) def wrapper(*args, **kwargs): print(’Decorator 1’) return func(*args, **kwargs) return wrapperdef decorator2(func): @wraps(func) def wrapper(*args, **kwargs): print(’Decorator 2’) return func(*args, **kwargs) return wrapper@decorator1@decorator2def add(x, y): return x + y

下面我們?cè)赑ython3.3下測(cè)試:

>>> add(2, 3)Decorator 1Decorator 25>>> add.__wrapped__(2, 3)5>>>

下面我們?cè)赑ython3.4下測(cè)試:

>>> add(2, 3)Decorator 1Decorator 25>>> add.__wrapped__(2, 3)Decorator 25>>>

最后要說(shuō)的是,并不是所有的裝飾器都使用了 @wraps ,因此這里的方案并不全部適用。 特別的,內(nèi)置的裝飾器 @staticmethod 和 @classmethod 就沒(méi)有遵循這個(gè)約定 (它們把原始函數(shù)存儲(chǔ)在屬性 __func__ 中)。

以上就是Python如何解除一個(gè)裝飾器的詳細(xì)內(nèi)容,更多關(guān)于Python 解除裝飾器的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 尹人在线视频 | 99综合在线 | 91av观看 | 草草草在线视频 | 久草视频在线观 | 中文字幕乱码中文乱码51精品 | 色黄啪啪18周岁以下禁止观看 | 欧美视频xxxxx | 久久久久女人精品毛片 | 国产精品毛片在线更新 | 国产成人狂喷潮在线观看2345 | 一区二区三区四区免费视频 | 美女张开双腿让男人桶视频免费 | 美女张开腿让男人捅的视频 | 欧美日韩国产免费一区二区三区 | 久草免费资源视频 | 亚洲第一页在线视频 | 亚洲欧美在线综合一区二区三区 | 手机看片日韩日韩韩 | 国产精品国产三级国产an不卡 | 香港经典a毛片免费观看看 香港经典a毛片免费观看爽爽影院 | 深夜一级毛片 | 视频一区二区三区自拍 | 一区二区三区不卡在线观看 | 亚洲天堂手机在线 | 台湾三级 | 亚洲国产精品一区二区九九 | 高清国产亚洲va精品 | 国产在线免 | 久草首页在线 | 97久久曰曰久久久 | 欧美视频久久久 | 国产成在线观看免费视频 | 国产美女精品视频免费观看 | 中文字幕日韩欧美一区二区三区 | 日本三级香港三级人妇gg在线 | 欧美亚洲一级片 | 国产男女乱淫真视频全程播放 | 亚洲不卡在线 | 美女张开腿让男人桶的 视频 | 亚洲精品久久久久久久福利 |