Généralement, ne pas faire de programmation OO en Python. Ce projet l'exige et je rencontre un peu de problèmes. Voici mon code de grattage pour tenter de comprendre où il s'est mal passé:Comment définir des décorateurs multi-arguments dans une classe dans 2.6
class trial(object):
def output(func, x):
def ya(self, y):
return func(self, x) + y
return ya
def f1(func):
return output(func, 1)
@f1
def sum1(self, x):
return x
qui ne compile pas. J'ai essayé d'ajouter le tag @staticmethod
aux fonctions "output" et "f1" mais en vain. Normalement, je le ferais
def output(func, x):
def ya(y):
return func(x) + y
return ya
def f1(func):
return output(func, 1)
@f1
def sum1(x):
return x
qui ne fonctionne pas. Alors, comment puis-je obtenir cela dans une classe?
Et si je l'accès à un élément de la classe? Comme au lieu de 'return func (x) + y', c'est' return func (x) + y + self.val'. Mon exemple ne montre pas ce qui signifie que je n'ai pas posé une question complète et correcte. – wheaties
Cela fonctionnera bien. Notez que la méthode finale "replacement" (quel est le mot pour cette?), 'Ya', a accès à' self', qui sera l'instance sur laquelle la méthode est appelée. Vous pouvez faire n'importe quoi dans 'ya' que vous feriez dans une méthode normale sur la classe. –