Python程式設計:如何實作類別裝飾器及應用?要點要掌握

王林
發布: 2023-04-12 17:25:07
轉載
1536 人瀏覽過

範例

Python中的裝飾器既可以是函數也可以是類別。在前幾節中,我們使用的是函數裝飾器。現在,我們將學習如何定義類別裝飾器。

我們將定義充當裝飾器的自訂類別。當用類別裝飾/修飾函數時,函數就成為該類別的實例。讓我們來一探究竟:

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

如上圖所示,我們建立了一個簡單的類別裝飾器。任何類別要成為裝飾器,都需要實作__call__()方法。 __call__()方法的功能與函數裝飾器中的包裝器函數相同。

現在讓我們用這個類別來裝飾一個函數:

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

#執行程式輸出結果如下:

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

帶有*args和**kwargs參數的類別裝飾器

為了讓類別裝飾器使用參數用*args和**kwargs,我們需要使用這些參數來實作__call__()方法,並將其傳遞給被修飾的函數。通用的表示方法如下:

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

在上面的程式碼中,類別裝飾器的__call__()方法接受*args和**kwargs參數。在程式碼行中,call方法將它們傳遞給所裝飾的函數:self.func(*args,**kwargs)。

現在我們用這個類別裝飾器來裝飾一個函數:

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

#類別裝飾裝飾函數

執行程式所輸出結果類似如下:

Hello Solo Cui

帶有return語句的類別裝飾器

還記得在函數裝飾器的wrapper函數中,我們可以使用return關鍵字傳回裝飾過的函數。我們會在這裡做同樣的事情,但是在__call__方法裡面。

Python程式設計:如何實作類別裝飾器及應用?要點要掌握

傳回結果的類別裝飾器

執行程式輸出結果如下:

TRACY CUI

如上圖所示,我們是在__call__方法中將修飾過的函數傳回:

return self.func(*args,**args)

至此,關於Python的裝飾器就介紹完了。

#

以上是Python程式設計:如何實作類別裝飾器及應用?要點要掌握的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板