使用自變數裝飾類別方法
要將類別欄位作為參數傳遞給類別方法上的裝飾器,必須存取該欄位在運行時而不是在類別定義時。方法如下:
1.攔截方法參數
裝飾器可以使用包裝函數攔截方法參數。包裝器的第一個參數將是實例(自身)。
<code class="python">def check_authorization(f): def wrapper(*args): print(args[0].url) return f(*args) return wrapper</code>
2.使用Getattr 動態存取欄位
或者,可以將欄位名稱作為字串傳遞給裝飾器並使用getattr 存取:
<code class="python">def check_authorization(attribute): def _check_authorization(f): def wrapper(self, *args): print(getattr(self, attribute)) return f(self, *args) return wrapper return _check_authorization</code>
使用此方法,裝飾器可以使用所需的屬性名稱作為參數來呼叫。
範例
<code class="python">@check_authorization("url") def get(self): do_work()</code>
在此範例中,裝飾器將在執行時間存取實例的 url 屬性。
以上是如何將類別欄位作為參數傳遞給類別方法上的裝飾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!