淺談解除裝飾器作用(python3新增)
更新時間:2018年10月15日 11:10:12 作者:曉東邪
今天小編就為大家分享一篇淺談解除裝飾器作用(python3新增),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
一個裝飾器已經(jīng)作用在一個函數(shù)上,你想撤銷它,直接訪問原始的未包裝的那個函數(shù)。
假設(shè)裝飾器是通過 @wraps 來實現(xiàn)的,那么你可以通過訪問 wrapped 屬性來訪問原始函數(shù):
>>> @somedecorator >>> def add(x, y): ... return x + y ... >>> orig_add = add.__wrapped__ >>> orig_add(3, 4) 7 >>>
如果有多個包裝器:
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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
python3第三方爬蟲庫BeautifulSoup4安裝教程
這篇文章主要為大家詳細介紹了python3第三方爬蟲庫BeautifulSoup4的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06Python??Flask框架操作數(shù)據(jù)庫的方法
Flask中最方便用的數(shù)據(jù)庫框架是flask_sqlalchamy,是對?SQLAlchamy?在?Flask?中的擴展,它主要在于簡化Flask?中?sqlalchamy的使用,本篇文章給大家介紹Python??Flask的數(shù)據(jù)庫操作使用方法,感興趣的朋友一起看看吧2024-02-02python分析inkscape路徑數(shù)據(jù)方案簡單介紹
這篇文章主要介紹了python分析inkscape路徑數(shù)據(jù)方案簡單介紹,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-09-09Python面經(jīng)之16個高頻面試問題總結(jié)
這篇文章主要給大家介紹了關(guān)于Python面經(jīng)之16個高頻面試問題的相關(guān)資料,幫助大家回顧基礎(chǔ)知識,了解面試套路,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03