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)
Une grande partie du code est comme çamethod_one
调用funciton_one
,但是现在要根据用户是否传入p2
来改变调用function_xxx
的方法,希望改成这个样子function_xxx
Je ne peux pas le modifier.
def method_two(self, p_list):
if self.p2:
return function_two(self.p2, p_list)
else:
return function_two(p_list)
J'ai envisagé d'utiliser un décorateur pour le gérer, mais il semble que l'utilisation d'un décorateur ne puisse envelopper qu'un calque en dehors de la fonction, mais ne puisse pas modifier de manière intrusive la méthode d'appel ici
Si vous en avez toujours besoin dans le fichier ? futur Il est possible de modifier la méthode d'appel basée sur self.p3 self.p4 Existe-t-il une meilleure solution ?
Vous pouvez utiliser des métaclasses pour modifier les classes comme par magie, voici un exemple