class Classname(object): def __init__(self, p1, p2=''): self.p1 = p1 self.p2 = p2 # @Classname.decorator def method_one(self, p_list): return function_one(p_list) def method_one(self, p_list): return function_two(p_list) def method_one(self, p_list): return function_three(p_list)
Banyak kod seperti inimethod_one
调用funciton_one
,但是现在要根据用户是否传入p2
来改变调用function_xxx
的方法,希望改成这个样子function_xxx
Saya tidak boleh mengubah suainya.
def method_two(self, p_list): if self.p2: return function_two(self.p2, p_list) else: return function_two(p_list)
Saya telah mempertimbangkan untuk menggunakan penghias untuk mengendalikannya, tetapi nampaknya menggunakan penghias hanya boleh membungkus lapisan di sekeliling fungsi, dan tidak boleh mengubah kaedah panggilan secara mengganggu
Jika saya masih perlu melakukannya pada masa hadapan, Adalah mungkin untuk mengubah suai kaedah panggilan berdasarkan self.p3 self.p4 Adakah terdapat penyelesaian yang lebih baik?
Anda boleh menggunakan metaclass untuk mengubah suai kelas secara ajaib, berikut ialah contoh