Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menambah Kaedah pada Objek Python Sedia Ada?

Bagaimanakah Saya Boleh Menambah Kaedah pada Objek Python Sedia Ada?

Linda Hamilton
Lepaskan: 2024-12-17 14:51:15
asal
969 orang telah melayarinya

How Can I Add Methods to Existing Python Objects?

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"
Salin selepas log masuk

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
Salin selepas log masuk

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"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan