Я делаю кодирование для измерений, у меня есть класс выборок, и каждый метод в этом классе - это какое-то фактическое измерение, например
sample = Sample()
sample.measure_ivc(*args)
Теперь я хочу повторить определенное измерение для набора внешние параметры, скажем, температура. В идеале это должно выглядеть так:
sample.measure_ivc(*args).iterate_T(T_list)
или
sample.iterate_T(T_list).measure_ivc(*args)
У меня много разных процедур измерения, поэтому я хочу избежать определения measure_ivc_T()
для каждой из них. Конечно, я могу передать имя метода измерения и его аргументы в iterate_method_over_T()
, но это выглядит грязно, особенно когда iterate_T()
требует своих собственных аргументов.
Самое элегантное решение, которое я когда-либо придумал, это
class Sample():
def ivc(self, *args) :
print(' meas ivc')
return
def iterate_T(self, T_list):
for t in T_list:
print (f'set T to {t}')
yield self
но работает только так
sample = Sample()
[s.ivc(*args) for s in sample.iterate_T(T_list)]
Может быть лучше / ближе к моему запросу?