最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何解除一個裝飾器

 更新時間:2020年08月07日 11:24:52   作者:David Beazley  
這篇文章主要介紹了Python如何解除一個裝飾器,幫助大家更好的理解和學(xué)習(xí)Python裝飾器,感興趣的朋友可以了解下

問題

一個裝飾器已經(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
>>>

討論

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

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

from functools import wraps

def decorator1(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    print('Decorator 1')
    return func(*args, **kwargs)
  return wrapper

def decorator2(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    print('Decorator 2')
    return func(*args, **kwargs)
  return wrapper

@decorator1
@decorator2
def add(x, y):
  return x + y

下面我們在Python3.3下測試:

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

下面我們在Python3.4下測試:

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

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

以上就是Python如何解除一個裝飾器的詳細(xì)內(nèi)容,更多關(guān)于Python 解除裝飾器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)讀取JSON并導(dǎo)出為表格數(shù)據(jù)格式

    Python實現(xiàn)讀取JSON并導(dǎo)出為表格數(shù)據(jù)格式

    這篇文章主要為大家詳細(xì)介紹了如何基于Python語言,讀取JSON格式的數(shù)據(jù),并將提取的指定內(nèi)容保存到表格文件中,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Pandas透視表(pivot_table)詳解

    Pandas透視表(pivot_table)詳解

    這篇文章主要介紹了Pandas透視表(pivot_table)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python如何快速下載依賴

    Python如何快速下載依賴

    本文介紹了四種在Python中快速下載依賴的方法,包括使用國內(nèi)鏡像源、開啟pip并發(fā)下載功能、使用pipreqs批量下載項目依賴以及使用conda管理依賴,通過這些方法,可以有效提升Python項目的依賴下載速度
    2025-03-03
  • python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    這篇文章主要介紹了python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式,Reqeusts支持以form表單形式發(fā)送post請求,只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-08-08
  • Python3實現(xiàn)的Mysql數(shù)據(jù)庫操作封裝類

    Python3實現(xiàn)的Mysql數(shù)據(jù)庫操作封裝類

    這篇文章主要介紹了Python3實現(xiàn)的Mysql數(shù)據(jù)庫操作封裝類,涉及Python針對mysql數(shù)據(jù)庫的連接、查詢、更新及關(guān)閉連接等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • python解析發(fā)往本機的數(shù)據(jù)包示例 (解析數(shù)據(jù)包)

    python解析發(fā)往本機的數(shù)據(jù)包示例 (解析數(shù)據(jù)包)

    這篇文章主要介紹了使用python解析獲取發(fā)往本機的數(shù)據(jù)包,并打印出來, 大家參考使用吧
    2014-01-01
  • python 生成器協(xié)程運算實例

    python 生成器協(xié)程運算實例

    下面小編就為大家?guī)硪黄猵ython 生成器協(xié)程運算實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python實現(xiàn)快速多線程ping的方法

    Python實現(xiàn)快速多線程ping的方法

    這篇文章主要介紹了Python實現(xiàn)快速多線程ping的方法,實例分析了Python多線程及ICMP數(shù)據(jù)包的發(fā)送技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 在keras里面實現(xiàn)計算f1-score的代碼

    在keras里面實現(xiàn)計算f1-score的代碼

    這篇文章主要介紹了在keras里面實現(xiàn)計算f1-score的代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python3中條件控制、循環(huán)與函數(shù)的簡易教程

    Python3中條件控制、循環(huán)與函數(shù)的簡易教程

    這篇文章主要給大家介紹了關(guān)于Python3中條件控制、循環(huán)與函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11

最新評論

五指山市| 康保县| 泰和县| 瓦房店市| 浦北县| 保德县| 抚州市| 屏南县| 康乐县| 桂东县| 瑞安市| 莫力| 平遥县| 绍兴市| 望城县| 盐边县| 于都县| 双峰县| 乌兰察布市| 黑水县| 溆浦县| 张北县| 崇阳县| 长沙市| 乐陵市| 敦化市| 牟定县| 南澳县| 青州市| 岚皋县| 洪雅县| 洪泽县| 乐亭县| 云南省| 秦皇岛市| 库车县| 通州区| 武穴市| 手游| 桐乡市| 荣成市|