Найти - Пользователи
Полная версия: имена методов в виде строк и параметры к ним
Начало » Python для новичков » имена методов в виде строк и параметры к ним
1
vrabey
доброе утро
как можно провернуть такую штуку?
есть список строк с названиями методов и передаваемых параметров пример:
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)
использую Python 2.7.3
JOHN_16
функции, переменное число параметров. Первый элемент получаемого списка это имя функции = метода объекта, все остальное это список аргументов которых функция способна корректна принять
for item in self.list_meth:
    curr_list=getattr(self, item[0])(*item[1:])
py.user.next
>>> 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
>>>
vrabey
тут ругается
    for name, *args in list_meth:
              ^
SyntaxError: invalid syntax
версия python наверное?
у меня - 2.7.3
vrabey
JOHN_16
Первый элемент получаемого списка это имя функции = метода объекта, все остальное это список аргументов которых функция способна корректна принять
спасибо.
py.user.next
vrabey
версия python наверное?
у меня - 2.7.3
Да, придётся как у JOHN_16 делать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB