ho classe in Python come questolambda statiche in pitone
import numpy as np
class BackPropogationNetwork:
# Static lambdas
sigmoid = lambda x : 1/(1+np.exp(-x))
sigmoid_prime = lambda sigmoid: sigmoid(1-sigmoid)
e questo è il contructor
def __init__(self):
self.some_attr = self.sigmoid(2)
ottengo questo errore
TypeError: <lambda>() takes exactly 1 argument (2 given)
Se chiamo come questo
self.some_attr = ClassName.sigmoid()
ottengo questo errore
TypeError: unbound method <lambda>() must be called with BackPropogationNetwork instance as first argument (got int instance instead)
Se si definiscono i 'lambda's all'interno della definizione di classe, sono lo stesso di qualsiasi altro metodo di istanza - è necessario l'argomento' self', e non li può chiamare sulla classe. Perché stai usando 'lambda' comunque? Se vuoi un '@ classmethod', scrivine uno. – jonrsharpe
Che dire di 'ClassName.sigmoid (2)'? –
usa invece 'def'. 'lambda' in python è una funzionalità rotta e non fornisce una potenza extra come in altre lingue. quindi utilizzare il descrittore '@ staticmethod'. 'self' implica che il sé sia anche un parametro. quindi stai passando due parametri. – HuStmpHrrr