Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Akses Atribut Dinamik dengan Tingkah Laku seperti __getattr__ dalam Modul?
Untuk melanjutkan modul dengan kefungsian seperti __getattr__ yang mencipta kejadian secara dinamik kelas dan menggunakan kaedah padanya apabila mengakses atribut yang tidak wujud dalam modul.
Sementara kaedah getattr biasanya beroperasi pada kelas, ia tidak terpakai secara langsung kepada modul. Untuk menangani perkara ini, fungsi pembalut boleh dilaksanakan untuk mengubah hala akses atribut kepada contoh kelas penggantian.
<code class="python">class Wrapper: def __init__(mod): setattr(mod, '__getattr__', getattrmod)</code>
Kelas pembalut ini menyediakan tersuai Kaedah getattr dipanggil getattrmod.
<code class="python">sys.modules[__name__] = Wrapper</code>
Dengan menggantikan modul itu sendiri dengan pembungkus, sebarang akses atribut masa hadapan pada modul akan dipintas oleh kaedah getattr.
<code class="python">def getattrmod(mod, attr): # Create an instance of the substitution class instance = Class() # Invoke the method with the same name as the missing attribute return getattr(instance, attr)</code>
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Akses Atribut Dinamik dengan Tingkah Laku seperti __getattr__ dalam Modul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!