Comment faire pour ajouter des fonctions

J'ai regardé partout mais c'est un difficile sujet de la recherche, sans beaucoup de bruit. Je veux faire quelque chose comme ceci:

def f(arg):
  return arg * arg

def add(self, other):
  return self * other

f.__add__ = add

cubefunction = f + f

Mais j'ai des erreurs sur la commande à cubefunction comme:

TypeError: unsupported operand type(s) for +: 'function' and 'function'

Est-il pas la fonction de l'algèbre possible en python ou suis-je en faisant une erreur stupide?

edit: beaucoup plus tard, je lisais Python officiel de l'intro à la programmation fonctionnelle (http://docs.python.org/howto/functional.html), et vers le bas, il fait référence à un tiers package "fonctionnelle" (http://oakwinter.com/code/functional/documentation/), ce qui peut composer des fonctions, c'est à dire:

>>> from functional import compose
>>> def add(a, b):
...     return a + b
...
>>> def double(a):
...     return 2 * a
...
>>> compose(double, add)(5, 6)
22
Cependant, votre exemple, ce qui semble indiquer que vous souhaitez soulever une valeur à la quatrième puissance, pas de cube.
J'imagine + est destinée à être la fonction "gof" composition? (Pas de qui est permet de répondre à la surcharge de + sur un objet de fonction).
Oups, je veux dire (f + g)(x) ==> f(g(x)) ... de toute façon, je veux m'assurer que l'intention est claire. Il y a déjà une réponse montrant une technique d'utilisation d'un type intermédiaire/wrapper.
pst: je ne pense pas vraiment que des détails, je vais m'occuper de ceux plus tard, je voulais juste ajouter des fonctions aux fonctions de façon naturelle. Aurait probablement été un peu plus clair..

OriginalL'auteur user318904 | 2010-11-04