Python: вызов функции из имени строки

Например, у меня есть объект str: menu = 'install'. Я хочу запустить метод установки из этой строки. Например, когда я вызываю меню (некоторые, аргументы), он вызывается install (some, arguments). Есть ли способ сделать это?

  • Запросы API облачного хранилища от GAE - 403 Доступ не настроен
  • Разработка модуля Python
  • Как вводить ввод в массив + PYTHON?
  • SUDS - программный доступ к методам и типам
  • Каков наилучший способ создания объекта Python, когда у вас есть реализация класса, хранящаяся в строке?
  • Создайте объект python, доступ к которому можно получить с помощью квадратных скобок
  • кто может сказать мне, что можно назвать встроенными функциями в следующем коде
  • Вложенные списки python
  • 3 Solutions collect form web for “Python: вызов функции из имени строки”

    Если он находится в классе, вы можете использовать getattr:

    class MyClass(object): def install(self): print "In install" method_name = 'install' # set by the command line options my_cls = MyClass() method = None try: method = getattr(my_cls, method_name) except AttributeError: raise NotImplementedError("Class `{}` does not implement `{}`".format(my_cls.__class__.__name__, method_name)) method() 

    или если это функция:

     def install(): print "In install" method_name = 'install' # set by the command line options possibles = globals().copy() possibles.update(locals()) method = possibles.get(method_name) if not method: raise NotImplementedError("Method %s not implemented" % method_name) method() 

    Вы также можете использовать словарь.

     def install(): print "In install" methods = {'install': install} method_name = 'install' # set by the command line options if method_name in methods: methods[method_name]() # + argument list of course else: raise Exception("Method %s not implemented" % method_name) 

    Почему мы не можем использовать eval ()?

     def install(): print "In install" 

    Новый метод

     def installWithOptions(var1, var2): print "In install with options " + var1 + " " + var2 

    И затем вы вызываете метод, как показано ниже

     method_name1 = 'install()' method_name2 = 'installWithOptions("a","b")' eval(method_name1) eval(method_name2) 

    Это дает результат как

     In install In install with options ab 
    Python - лучший язык программирования в мире.