Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghantar Medan Kelas kepada Penghias pada Kaedah Kelas sebagai Hujah?
Menghiasi Kaedah Kelas dengan Hujah Kendiri
Untuk menghantar medan kelas kepada penghias pada kaedah kelas sebagai hujah, anda perlu mengakses medan pada masa jalan dan bukannya pada masa definisi kelas. Begini caranya:
1. Memintas Argumen Kaedah
Penghias boleh memintas argumen kaedah menggunakan fungsi pembalut. Hujah pertama kepada pembungkus ialah contoh (diri).
<code class="python">def check_authorization(f): def wrapper(*args): print(args[0].url) return f(*args) return wrapper</code>
2. Gunakan Getattr untuk Mengakses Medan Secara Dinamik
Sebagai alternatif, nama medan boleh dihantar kepada penghias sebagai rentetan dan diakses menggunakan 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>
Dengan kaedah ini, penghias boleh dipanggil dengan nama atribut yang diingini sebagai hujah.
Contoh
<code class="python">@check_authorization("url") def get(self): do_work()</code>
Dalam contoh ini, penghias akan mengakses atribut url contoh pada masa jalan.
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Medan Kelas kepada Penghias pada Kaedah Kelas sebagai Hujah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!