У меня есть некоторые данные, хранящиеся в объекте Foo()
.автоматическое определение новых функций в python
Foo.data
- это список n x m np.array, где каждый массив представляет собой экспериментальные данные в определенное время. Массив состоит из m переменных, а n соответствует числу различных точек, в которых было выполнено измерение.
Мы можем считать, что мы имеем в нашем распоряжении список названия переменных, например:
var_names=['x','volume','u','L_bar','rho','P',.....]
Я хочу хотел бы сделать более доступными данные, определяя что-то вроде:
def Foo.P(self,x,time)
index_t=time_list.index(time)
index_x=var_names.index(x)
index_P=var_names.index(P)
return Foo.data[index_t][index_x,index_P]
Вопрос заключается в следующем: учитывая, что список переменных не является фиксированным, но он может меняться, могу ли я автоматически определить некоторые функции, которые выполняют то, что я показываю ранее, без явного определения одного для каждой переменной?
Я имею в виду, я хотел бы иметь кучу функций, таких как Foo.P, Foo.volume, Foo.u, Foo.rho, которые извлекают значение переменной, заданное именем функции, для a (x, time), не определяя их все по одному.
Вы можете использовать 'GetAttr()': http://stackoverflow.com/q/4075190/882697 – Plouff
Посмотрите на ['namedtuple'] (https://docs.python.org/2/library/collections.html#collections.namedtuple). –
Если мой ответ помогает, не забудьте принять его. :) –