Rumah >pembangunan bahagian belakang >Tutorial Python >Kaedah Terikat, Kaedah Tidak Terikat dan Fungsi dalam Python: Apakah Perbezaannya?

Kaedah Terikat, Kaedah Tidak Terikat dan Fungsi dalam Python: Apakah Perbezaannya?

DDD
DDDasal
2024-10-27 16:29:01279semak imbas

Bound Methods, Unbound Methods, and Functions in Python: What's the Difference?

Kaedah Terikat, Kaedah Tidak Terikat dan Fungsi: Trio Tersendiri dalam Python

Dalam bidang manipulasi objek Python, memahami perbezaan antara fungsi, kaedah terikat, dan kaedah tidak terikat adalah penting. Mari kita mulakan perjalanan untuk merungkai nuansa mereka.

Apakah itu Fungsi?

Fungsi pada asasnya ialah blok kod serba lengkap yang melaksanakan tugas tertentu. Ia dibuat menggunakan pernyataan def atau lambda. Apabila fungsi ditakrifkan dalam kelas, Python mengubahnya menjadi kaedah tidak terikat.

Apakah Kaedah Tidak Terikat?

Kaedah tidak terikat ialah fungsi yang dilampirkan pada kelas tetapi belum terikat kepada contoh khusus kelas itu. Dalam Python 2, kaedah tidak terikat dicipta apabila fungsi dimasukkan ke dalam pernyataan kelas. Dalam Python 3, konsep kaedah tidak terikat telah dihapuskan.

Apakah Kaedah Terikat?

Kaedah terikat ialah fungsi yang telah terikat pada contoh sebuah kelas. Apabila kaedah terikat diakses pada tika kelas, ia secara automatik membekalkan tika kepada kaedah sebagai parameter pertama.

Saling Penukaran

  • Fungsi to Unbound Method: Gunakan jenis.MethodType class constructor: types.MethodType(function, None, class)
  • Unbound Method to Bound Method: Akses kaedah unbound pada kelas contoh atau gunakan kaedah get: unbound_method.__get__(instance, class)
  • Kaedah Terikat kepada Fungsi: Dapatkan semula fungsi asal menggunakan atribut im_func: bound_method.im_func

Implikasi Praktikal

Perbezaan utama antara fungsi dan kaedah tidak terikat ialah yang kedua mengetahui kelas mana ia tergolong, manakala fungsi tidak. Ini menjadi jelas apabila cuba memanggil kaedah ini tanpa contoh yang sesuai.

Selain itu, mengikat fungsi pada contoh membetulkan hujah pertama (diri) kepada contoh, dengan berkesan menggantikan kaedah terikat dengan fungsi lambda yang setara atau fungsi separa.

Kesimpulan

Memahami perbezaan antara fungsi, kaedah tidak terikat dan kaedah terikat adalah penting untuk manipulasi objek yang berkesan dalam Python. Setiap borang ini mempunyai tujuan yang unik, dan penukaran antaranya membolehkan pengikatan kaedah yang dinamik kepada kejadian.

Atas ialah kandungan terperinci Kaedah Terikat, Kaedah Tidak Terikat dan Fungsi dalam Python: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn