Форум сайта python.su
23
доброе утро
как можно провернуть такую штуку?
есть список строк с названиями методов и передаваемых параметров пример:
self.list_meth = [ ["key_img", 0, 4], ["key_empty_img", 0, 4], ["increase_seq", 0, 4], ["key_img", 5, 9], ["key_empty_img", 5, 9], ["increase_seq", 5, 9] ]
def create_seq(self): for meth, st, fin in self.list_meth: curr_list = getattr(self, meth)(st, fin) self.extend(curr_list)
self.list_meth = [ ["key_img", 0, 4, True], ["key_empty_img", 0, 4, False, True], ["increase_seq", 0, 4], ["key_img", 5, 9], ["key_empty_img", 5, 9, True], ["increase_seq", 5, 9], ]
curr_list = getattr(self, meth)(st, fin, args_list)
Офлайн
221
функции, переменное число параметров. Первый элемент получаемого списка это имя функции = метода объекта, все остальное это список аргументов которых функция способна корректна принять
for item in self.list_meth: curr_list=getattr(self, item[0])(*item[1:])
Офлайн
857
>>> list_meth = [ ... ["key_img", 0, 4, True], ... ["key_empty_img", 0, 4, False, True], ... ["increase_seq", 0, 4], ... ["key_img", 5, 9], ... ["key_empty_img", 5, 9, True], ... ["increase_seq", 5, 9], ... ] >>> >>> def f(name, arg1=None, arg2=None, ... arg3=None, arg4=None): ... print(name, '->', arg1, arg2, arg3, arg4) ... >>> for name, *args in list_meth: ... f(name, *args) ... key_img -> 0 4 True None key_empty_img -> 0 4 False True increase_seq -> 0 4 None None key_img -> 5 9 None None key_empty_img -> 5 9 True None increase_seq -> 5 9 None None >>>
Офлайн
23
тут ругается
for name, *args in list_meth: ^ SyntaxError: invalid syntax
Отредактировано vrabey (Июль 3, 2014 09:08:02)
Офлайн
23
JOHN_16спасибо.
Первый элемент получаемого списка это имя функции = метода объекта, все остальное это список аргументов которых функция способна корректна принять
Офлайн
857
vrabeyДа, придётся как у JOHN_16 делать.
версия python наверное?
у меня - 2.7.3
Офлайн