Как создать список функций, а затем использовать его как вызываемый в другой функции? - PullRequest
0 голосов
/ 21 апреля 2020

Вот сценарий. У меня есть список self.funlist

self.funlist = [self.data_line_1.setData(self.t,self.x),
                self.data_line_2.setData(self.t,self.x),
                self.data_line_3.setData(self.t,self.x)]

и функция do_it()

, когда я выполняю эту функцию как

self.do_it():
   self.funlist[0]

, она не выполняет никаких действий, когда я выполнить эту функцию как

self.do_it():
    self.data_lin_1.setData(self.t,self.x)

, затем выполнить действие

Вопрос в том, почему первый метод не работает?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

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

self.funlist = [self.data_line_1.setData,
                self.data_line_2.setData,
                self.data_line_3.setData]

И затем вы выполняете его с

self.do_it():
   self.funlist[0](self.t, self.x)
1 голос
/ 21 апреля 2020

Если вам нужны разные переменные для каждого вызова, вы можете сделать это:

self.funlist = [(self.data_line_1.setData, self.t, self.x),
                (self.data_line_2.setData, self.u, self.y),
                (self.data_line_3.setData, self.w, self.z, self.zz9pluralzalpha)]

def do_it(self, index):
   f, *args = self.funlist[index]
   f(*args)

Если вы вызываете do_it(0), то при выполнении первой строки: f, *args = self.funlist[0] вы получите:

f = self.data_line_1.setData и args = (self.t, self.x)

Следующая строка становится:

self.data_line_1.setData(self.t, self.x)

Примечание:

(self.t, self.x) значения будут теми, которые существовали, когда self.funlist был первоначально создан, и не обязательно значения, к которым self.t, self.x относятся сейчас.

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