Блог

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

Предположим у Вас есть модуль или класс ‘foo’ с ‘bаr’ методом и вы хотите вызвать метод со строки, для того чтобы вызвать метод из строки нужно выполнить:

import foo
call = getattr(foo, "bar")
result = call()

Если на то уже пошло, то линии два и три могут быть сжаты до одной строки:

result = getattr(foo, "bar")()

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

Есть еще функция eval() и exac.

>>> mycode = 'print "hello world"'
>>> exec mycode
hello world

>>> x = eval("2+2")
>>> x
4