2015-02-25 4 views
1

Вот функция:Динамическое имя метода вызова?

def runaction(ENV, action_list): 

    appmanage_list = ['status'] 

    for action in action_list.keys(): 
     print('Action: %s' % action) 

     if action in appmanage_list: 

      from lib import appmanage_functions 
      a = appmanage_functions.AppManage(ENV) 
      a.[SOMETHING_GOES_HERE](ENV) 

Это называется как:

runaction(env, main_f.opts2) 

action_list (main_f.opts2 аргумент в вызове функции) - это словарь с argparse с {'optionname':True};

appmanage_list - будет включать в себя все варианты, которым необходимо позвонить с кодом выше;

action - имя параметра, такое же, как метод от appmanage_functions.AppManage класс, необходимо называть.

Вместо [SOMETHING_GOES_HERE] Я хочу добавить переменную action, чтобы вызвать соответствующий метод из класса.

Я пытался что-то вроде:

(a. + action + (ENV)) 

и:

a.('%s' % action)(ENV) 

Но уверен - это не работает ...

Python 2.7

ответ

2

object.foo можно перефразировать getattr(object, 'foo') ,

Таким образом, вы можете сказать:

getattr(a, action)(ENV) 
Смежные вопросы