Ho cercato ovunque ma è un argomento difficile da cercare senza molto rumore. Voglio fare qualcosa di simile:Come aggiungere funzioni
def f(arg):
return arg * arg
def add(self, other):
return self * other
f.__add__ = add
cubefunction = f + f
Ma ho errori sul compito di cubefunction come:
TypeError: unsupported operand type(s) for +: 'function' and 'function'
C'è alcuna funzione di algebra possibile in pitone o sto solo facendo un errore stupido?
edit: molto più tardi, stavo leggendo intro ufficiale di Python per la programmazione funzionale (http://docs.python.org/howto/functional.html), e verso il basso si fa riferimento a un terzo pacchetto partito "funzionale" (http://oakwinter.com/code/functional/documentation/), che può comporre funzioni, vale a dire:
>>> from functional import compose
>>> def add(a, b):
... return a + b
...
>>> def double(a):
... return 2 * a
...
>>> compose(double, add)(5, 6)
22
Tuttavia, il tuo esempio sembra indicare che desideri aumentare un valore per la quarta potenza, non per il cubo. –
Immagino che + significhi essere la composizione "gof" della funzione? (Non è utile per una risposta a * overloading + su un oggetto funzione *). –
Oops, intendo '(f + g) (x) ==> f (g (x))' ... comunque, voglio assicurarmi che il -intent- sia chiaro. C'è già una risposta che mostra una tecnica di utilizzo di un tipo/wrapper intermedio. –