Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah kita boleh menggunakan kaedah kelas secara dinamik pada modul dalam Python?
Apabila mengakses atribut modul, tingkah laku biasa melibatkan mendapatkan semula atribut yang ditakrifkan secara statik. Walau bagaimanapun, bagaimana jika kita menginginkan mekanisme untuk mencipta kejadian kelas secara dinamik dalam modul dan menggunakan kaedah kelas itu apabila atribut diakses?
Untuk mencapai ini, kita mesti mengatasi dua halangan:
<code class="python">def __getattr__(mod, name): return getattr(A(), name)</code>Dalam pelaksanaan ini, 'A' ialah kelas dalam modul yang kaedahnya ingin kami akses. Penyelesaian ini, walau bagaimanapun, boleh membawa kepada perbezaan halus dalam tingkah laku kerana penciptaan berbilang kejadian dan memintas global.Penggantian dengan Contoh KelasSebagai alternatif, kami boleh menggunakan mesin import Python untuk gantikan modul itu sendiri dengan contoh kelas yang diingini.
<code class="python">class Foo: def funct1(self, args): <code> sys.modules[__name__] = Foo()</code>Teknik ini dengan berkesan membolehkan kami menggunakan
getattr dan kaedah meta lain pada modul.
NotaAtas ialah kandungan terperinci Bagaimanakah kita boleh menggunakan kaedah kelas secara dinamik pada modul dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!