Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana cara menambahkan kaedah secara dinamik untuk membantah contoh dalam python?
mengambil tiga argumen: objek, nama atribut (yang akan menjadi nama kaedah), dan nilai (yang akan menjadi kaedah itu sendiri). Kaedah itu sendiri harus menjadi fungsi. setattr()
menambah fungsi ini sebagai kaedah yang dinamakan setattr()
kepada contoh
tetap tidak berubah. Kaedah ini hanya tersedia untuk contoh tertentu
. Contoh -contoh lain dari<code class="python">class MyClass: def __init__(self, value): self.value = value obj = MyClass(10) def new_method(self): print(f"The value is: {self.value}") setattr(obj, 'my_new_method', new_method) obj.my_new_method() # Output: The value is: 10</code>tidak akan mempunyai kaedah ini melainkan jika anda memohon
kepada mereka secara individu. Beberapa alternatif wujud untuk mengelakkan warisan apabila menambah fungsi: new_method
setattr()
my_new_method
Komposisi: obj
daripada mewarisi dari kelas, buat contoh kelas lain dalam kelas anda. Ini membolehkan anda memanfaatkan fungsi kelas lain tanpa mengubah struktur kelas asal. Mereka menyediakan cara untuk menambah fungsi tanpa hubungan ibu bapa dan anak yang ketat. Walau bagaimanapun, mereka masih bergantung kepada warisan, walaupun dengan cara yang lebih terkawal. Ini amat berguna untuk menambahkan fungsi khusus untuk objek tunggal. Ia berkuasa tetapi boleh berisiko jika tidak ditangani dengan teliti, kerana ia boleh membawa kepada kesan sampingan yang tidak dijangka dan membuat kod lebih sukar untuk dikekalkan. Gunakan ini dengan berhati -hati. Berikut adalah beberapa amalan terbaik: MyClass
Atas ialah kandungan terperinci Bagaimana cara menambahkan kaedah secara dinamik untuk membantah contoh dalam python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!