вот моя проблема:self variable класса как аргумент метода класса (python)
для любых двух функций, например. f (x, a) и g (x, b), я хочу построить новую функцию, скажем F (f, g), которая возвращает произведение f и g. Итак:
F (F, G) = е * г = е (х, а) * г (х, Ь) = Р (х, а, б)
Я хочу сделать это жесткого кодирования наименее возможно. Итак, для h (x, c, d) я бы получил F (f, h) = F (x, a, c, d). Учитывая, что тогда я хочу свести к минимуму F, я думал о создании класса. Вот MWE:
import numpy as np
from inspect import getargspec
def f(x, a):
return np.tanh(x*a)
def g(x, b):
return np.power(x,b)
def h(x, c, d):
return x*c+np.log(x)
class fit_func(object):
def __init__(self, data, *args):
self.data = data
self.func_a = args[0]
self.func_b = args[1]
self.args_a = getargspec(args[0])[0][1:]
self.args_b = getargspec(args[1])[0][1:]
в этот момент, я думал о том числе следующего __call__
метода:
def __call__(self, *self.args_a, *self.args_b):
return self.func_a(self.data,self.args_a)*self.func_b(data,self.args_b)
Я подумал: этот путь экземпляра класса, скажут F = fit_func(some_data_array,f,g)
, будет вызываемыми в качестве F(a,b)
, Тем не менее, python не нравится self.args_a
и self.args_b
среди аргументов __call__
, и я понимаю, почему. Кто-нибудь знает умный способ получить это? Большое спасибо заранее
Я считаю, что вы в виду е (х, а) * г (х, * Ь *) = F (х, а, б) – Mike
абсолютно Майк и я также исправлен один вещь: распаковка * перед 'self.args_a' и' b' в аргументе метода '__call__' – andrea