Python中的裝飾器既可以是函數也可以是類別。在前幾節中,我們使用的是函數裝飾器。現在,我們將學習如何定義類別裝飾器。
我們將定義充當裝飾器的自訂類別。當用類別裝飾/修飾函數時,函數就成為該類別的實例。讓我們來一探究竟:
如上圖所示,我們建立了一個簡單的類別裝飾器。任何類別要成為裝飾器,都需要實作__call__()方法。 __call__()方法的功能與函數裝飾器中的包裝器函數相同。
現在讓我們用這個類別來裝飾一個函數:
#執行程式輸出結果如下:
為了讓類別裝飾器使用參數用*args和**kwargs,我們需要使用這些參數來實作__call__()方法,並將其傳遞給被修飾的函數。通用的表示方法如下:
在上面的程式碼中,類別裝飾器的__call__()方法接受*args和**kwargs參數。在程式碼行中,call方法將它們傳遞給所裝飾的函數:self.func(*args,**kwargs)。
現在我們用這個類別裝飾器來裝飾一個函數:
#類別裝飾裝飾函數
執行程式所輸出結果類似如下:
Hello Solo Cui
還記得在函數裝飾器的wrapper函數中,我們可以使用return關鍵字傳回裝飾過的函數。我們會在這裡做同樣的事情,但是在__call__方法裡面。
傳回結果的類別裝飾器
執行程式輸出結果如下:
TRACY CUI
如上圖所示,我們是在__call__方法中將修飾過的函數傳回:
return self.func(*args,**args)
至此,關於Python的裝飾器就介紹完了。
#以上是Python程式設計:如何實作類別裝飾器及應用?要點要掌握的詳細內容。更多資訊請關注PHP中文網其他相關文章!