Menambah Kaedah pada Contoh Objek Sedia Ada dalam Python
Dalam Python, biasanya tidak digalakkan untuk menambah kaedah pada objek sedia ada (iaitu, bukan dalam definisi kelas). Walau bagaimanapun, terdapat beberapa pengecualian apabila ia mungkin perlu.
Kaedah Terikat lwn. Fungsi
Dalam Python, kaedah dibezakan daripada fungsi dengan terikat pada contoh objek . Apabila kaedah dipanggil, tika itu diluluskan secara automatik sebagai hujah pertama.
Fungsi, sebaliknya, tidak terikat pada mana-mana kejadian tertentu dan mesti digunakan secara eksplisit dengan hujah yang sesuai.
Mengubah Suai Atribut Kelas
Jika anda ingin menambah kaedah pada semua kejadian kelas, anda hanya boleh mengubah suai definisi kelas:
class A: def bar(self): print("bar") a = A() a.bar() # Output: "bar"
Mengubah suai Kejadian Individu
Walau bagaimanapun, jika anda perlu menambah kaedah pada contoh tertentu kelas, perkara menjadi sedikit lebih rumit. Anda tidak boleh menetapkan fungsi secara langsung kepada atribut instance, kerana ia tidak akan terikat:
def barFighters(): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument
Fungsi Mengikat dengan MethodType
Untuk mengikat fungsi dengan betul kepada contoh objek, anda boleh menggunakan fungsi MethodType daripada modul jenis:
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # Output: "barFighters"
Pengikatan kaedah ini memastikan bahawa fungsi itu digunakan dengan contoh sebagai hujah pertama apabila dipanggil.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah pada Objek Python Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!