Aidez un gars à sortir. Ne peut pas sembler obtenir un décorateur pour travailler avec l'héritage. Brisé le plus petit exemple le plus simple dans mon espace de travail de travail. Je n'arrive toujours pas à le faire fonctionner.Décorateurs et héritage Python
class bar(object):
def __init__(self):
self.val = 4
def setVal(self,x):
self.val = x
def decor(self, func):
def increment(self, x):
return func(self, x) + self.val
return increment
class foo(bar):
def __init__(self):
bar.__init__(self)
@decor
def add(self, x):
return x
Oups, le nom "décor" n'est pas défini.
Ok, qu'en est-il de @bar.decor
? TypeError: la méthode non liée "decor" doit être appelée avec une instance de barre comme premier argument (l'occurrence de la fonction got est à la place)
Ok, qu'en est-il de @self.decor
? Le nom "self" n'est pas défini.
Ok, qu'en est-il de @foo.decor
?! Le nom "foo" n'est pas défini.
AaaaAAaAaaaarrrrgggg ... Qu'est-ce que je fais mal?
Dans votre exemple, vous pourriez avoir 'return x + self.val' pour la définition de' 'add' dans foo'. Ne pourriez-vous pas le faire dans votre code actuel? –
Ceci est un exemple de code distillé mettant en évidence le problème auquel je faisais face. Si le code était aussi simple, alors oui. Cependant, ce n'est pas le cas. – wheaties