Mengikat Kaedah Tidak Terikat dalam Python
Mengikat kaedah tidak terikat kepada kejadian ialah tugas biasa dalam pengaturcaraan Python, terutamanya apabila bekerja dengan rangka kerja seperti wxPython. Walau bagaimanapun, hanya memanggil kaedah bind() pada kaedah tidak terikat mengakibatkan ralat.
Masalahnya
Apabila mengikat kaedah tidak terikat, program gagal kerana kaedah tidak terikat memerlukan contoh untuk digunakan. Mengikatnya secara langsung tanpa memanggilnya menjana ralat.
Penyelesaian
Nasib baik, terdapat dua penyelesaian untuk masalah ini.
Menggunakan Deskriptor
Fungsi dalam Python juga merupakan deskriptor, yang bermaksud ia mempunyai kaedah get. Kaedah ini membenarkan mengikat kaedah tidak terikat kepada kejadian. Untuk mengikat kaedah tidak terikat menggunakan deskriptor:
bound_handler = handler.__get__(self, MyWidget)
Menggunakan Fungsi Ikatan Tersuai
Sebagai alternatif, anda boleh menggunakan fungsi mengikat tersuai seperti bind() daripada contoh di bawah:
def bind(instance, func, as_name=None): bound_method = func.__get__(instance, instance.__class__) setattr(instance, as_name, bound_method) return bound_method
Fungsi ini membolehkan anda mengikat kaedah tidak terikat dengan nama tersuai.
Kesimpulan
Dengan menggunakan sama ada pendekatan deskriptor atau fungsi mengikat tersuai, anda boleh mengikat kaedah tidak terikat tanpa menggunakan kaedah tersebut, membolehkan struktur kod yang bersih dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Kaedah Tidak Terikat kepada Contoh dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!