Menghiasi Kaedah Kelas dengan Hujah Kendiri
Dalam Python, kaedah kelas boleh dihiasi untuk menambah gelagat tambahan atau mengesahkan hujahnya. Walau bagaimanapun, menghantar atribut contoh sebagai hujah kepada penghias boleh menjadi mencabar.
Untuk menangani perkara ini, satu penyelesaian adalah untuk mendapatkan semula nilai atribut secara dinamik pada masa jalan dalam penghias. Begini cara anda boleh mencapai perkara ini:
<code class="python">from functools import wraps def check_authorization(f): @wraps(f) def wrapper(*args): print(args[0].url) return f(*args) return wrapper class Client: def __init__(self, url): self.url = url @check_authorization def get(self): print('get') Client('http://www.google.com').get()</code>
Dalam contoh ini, penghias check_authorization memintas hujah kaedah dan mendapatkan semula atribut URL tika daripada argumen pertama (iaitu tika itu sendiri). Anda kemudiannya boleh menggunakan nilai atribut dalam penghias untuk melakukan sebarang semakan kebenaran yang diperlukan.
Untuk fleksibiliti yang lebih besar, anda boleh mengubah suai penghias untuk menerima nama atribut sebagai parameter:
<code class="python">def check_authorization(attribute): def _check_authorization(f): @wraps(f) def wrapper(self, *args): print(getattr(self, attribute)) return f(self, *args) return wrapper return _check_authorization</code>
Ini membolehkan anda menentukan nama atribut untuk disemak semasa masa jalan, memberikan anda lebih kawalan ke atas proses hiasan.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Atribut Contoh kepada Penghias Kaedah Kelas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!