метод, повторяющий другие методы в python - PullRequest
0 голосов
/ 20 марта 2020

Я делаю кодирование для измерений, у меня есть класс выборок, и каждый метод в этом классе - это какое-то фактическое измерение, например

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)]

Может быть лучше / ближе к моему запросу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...