亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python如何解除一個裝飾器

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

問題

一個裝飾器已經(jīng)作用在一個函數(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ù)在調試、內省和其他函數(shù)操作時是很有用的。 但是我們這里的方案僅僅適用于在包裝器中正確使用了 @wraps 或者直接設置了 __wrapped__ 屬性的情況。

如果有多個包裝器,那么訪問 __wrapped__ 屬性的行為是不可預知的,應該避免這樣做。 在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 ,因此這里的方案并不全部適用。 特別的,內置的裝飾器 @staticmethod @classmethod 就沒有遵循這個約定 (它們把原始函數(shù)存儲在屬性 __func__ 中)。

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

相關文章

  • Python運用于數(shù)據(jù)分析的簡單教程

    Python運用于數(shù)據(jù)分析的簡單教程

    這篇文章主要介紹了Python運用于數(shù)據(jù)分析的簡單教程,主要介紹了如何運用Python來進行數(shù)據(jù)導入、變化、統(tǒng)計和假設檢驗等基本的數(shù)據(jù)分析,需要的朋友可以參考下
    2015-03-03
  • 淺析Python 多行匹配模式

    淺析Python 多行匹配模式

    這篇文章主要介紹了Python 多行匹配模式的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 關于pyqt5控件自適應窗口超詳細知識點匯總

    關于pyqt5控件自適應窗口超詳細知識點匯總

    這篇文章主要介紹了關于pyqt5控件自適應窗口超詳細知識點匯總,有了布局,再在布局中放置各種控件,我們就能讓控件實現(xiàn)自適應的效果,需要的朋友可以參考下
    2023-03-03
  • Matplotlib繪圖基礎之刻度詳解

    Matplotlib繪圖基礎之刻度詳解

    Matplotlib中刻度是用于在繪圖中表示數(shù)據(jù)大小的工具,通常以整數(shù)或小數(shù)表示,具體取決于坐標軸的類型和限制,下面就為大家介紹一下Matplotlib中刻度是具體設置與使用吧
    2023-07-07
  • conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解決方法

    conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解

    很長一段時間沒用conda了,然后突然使用conda創(chuàng)建環(huán)境報錯,所以下面這篇文章主要給大家介紹了關于conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解決方法,需要的朋友可以參考下
    2022-11-11
  • Flask的url_for和request.url如何進行URL判斷

    Flask的url_for和request.url如何進行URL判斷

    這篇文章主要介紹了Flask的url_for和request.url如何進行URL判斷問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于Python繪制鍵盤按鍵使用次數(shù)的熱力圖

    基于Python繪制鍵盤按鍵使用次數(shù)的熱力圖

    這篇文章主要為大家詳細介紹了如何使用Python繪制鍵盤按鍵使用次數(shù)的熱力圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • 在PyCharm中使用FMEObjects的操作步驟

    在PyCharm中使用FMEObjects的操作步驟

    這篇文章主要介紹了在PyCharm中使用FMEObjects,本文將ArcGISPro2.8的Python3.7解釋器與FME2022.0配合使用,通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • pandas重置索引標簽的實現(xiàn)示例

    pandas重置索引標簽的實現(xiàn)示例

    在使用Pandas進行數(shù)據(jù)處理時,有時候我們可能會需要對數(shù)據(jù)進行重置索引的操作,本文主要介紹了pandas重置索引標簽的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • Python如何將將模塊分割成多個文件

    Python如何將將模塊分割成多個文件

    這篇文章主要介紹了Python如何將將模塊分割成多個文件,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08

最新評論