淺談解除裝飾器作用(python3新增)
一個(gè)裝飾器已經(jīng)作用在一個(gè)函數(shù)上,你想撤銷它,直接訪問原始的未包裝的那個(gè)函數(shù)。
假設(shè)裝飾器是通過 @wraps 來實(shí)現(xiàn)的,那么你可以通過訪問 wrapped 屬性來訪問原始函數(shù):
>>> @somedecorator >>> def add(x, y): ... return x + y ... >>> orig_add = add.__wrapped__ >>> orig_add(3, 4) 7 >>>
如果有多個(gè)包裝器:
In [588]: from functools import wraps In [589]: def decorator1(func): ...: @wraps(func) ...: def wrapper(*args, **kwargs): ...: print ('Decorator 1') ...: return func(*args, **kwargs) ...: return wrapper ...: In [590]: def decorator2(func): ...: @wraps(func) ...: def wrapper(*args, **kwargs): ...: print ('Decorator 2') ...: return func(*args, **kwargs) ...: return wrapper ...: In [591]: @decorator1 ...: @decorator2 ...: def add(x, y): ...: return x+y ...: In [592]: add(2,3) Decorator 1 Decorator 2 Out[592]: 5 In [593]: add.__wrapped__(2, 3) Decorator 2 Out[593]: 5 In [594]: add.__wrapped__.__wrapped__(2,3) Out[594]: 5
參考:Python Cookbook
以上這篇淺談解除裝飾器作用(python3新增)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3第三方爬蟲庫BeautifulSoup4安裝教程
這篇文章主要為大家詳細(xì)介紹了python3第三方爬蟲庫BeautifulSoup4的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Django項(xiàng)目使用CircleCI的方法示例
這篇文章主要介紹了Django項(xiàng)目使用CircleCI的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07tensorflow查看ckpt各節(jié)點(diǎn)名稱實(shí)例
今天小編就為大家分享一篇tensorflow查看ckpt各節(jié)點(diǎn)名稱實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python??Flask框架操作數(shù)據(jù)庫的方法
Flask中最方便用的數(shù)據(jù)庫框架是flask_sqlalchamy,是對?SQLAlchamy?在?Flask?中的擴(kuò)展,它主要在于簡化Flask?中?sqlalchamy的使用,本篇文章給大家介紹Python??Flask的數(shù)據(jù)庫操作使用方法,感興趣的朋友一起看看吧2024-02-02python分析inkscape路徑數(shù)據(jù)方案簡單介紹
這篇文章主要介紹了python分析inkscape路徑數(shù)據(jù)方案簡單介紹,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09Python面經(jīng)之16個(gè)高頻面試問題總結(jié)
這篇文章主要給大家介紹了關(guān)于Python面經(jīng)之16個(gè)高頻面試問題的相關(guān)資料,幫助大家回顧基礎(chǔ)知識(shí),了解面試套路,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03