Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menambah Kaedah pada Contoh Objek Tertentu dalam Python?

Bagaimanakah Saya Boleh Menambah Kaedah pada Contoh Objek Tertentu dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 09:44:10119semak imbas

How Can I Add a Method to a Specific Object Instance in Python?

Menambah Kaedah pada Contoh Objek Sedia Ada: Panduan untuk Python

Walaupun secara amnya tidak digalakkan, penambahan kaedah pada contoh objek mungkin diperlukan dalam keadaan tertentu. Dalam Python, perbezaan antara fungsi dan kaedah terikat adalah penting untuk proses ini.

Kaedah terikat dipautkan kepada contoh tertentu, yang disediakan secara automatik sebagai hujah pertama apabila diseru. Sebaliknya, boleh panggil peringkat kelas kekal tidak terikat, membolehkan pengubahsuaian definisi kelas dinamik.

Untuk melampirkan kaedah pada keseluruhan kelas, cuma kemas kini definisinya:

def fooFighters(self):
    print "fooFighters"

A.fooFighters = fooFighters

Kaedah ini tersedia untuk semua kejadian, termasuk yang ditakrifkan sebelum ini.

Melampirkan kaedah pada tika individu memberikan cabaran. Menetapkannya terus kepada contoh tidak mengikatnya, membawa kepada ralat semasa memanggil.

Untuk menyelesaikannya, gunakan fungsi MethodType daripada modul jenis:

import types
a.barFighters = types.MethodType(barFighters, a)

Kaedah terikat hanya mempengaruhi contoh khusus yang dilampirkan, meninggalkan contoh kelas lain tidak disentuh. Untuk mendapatkan cerapan lanjut, terokai topik seperti deskriptor dan pengaturcaraan kelas meta.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah pada Contoh Objek Tertentu dalam Python?. 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