python получить переменную модуля по имени

Я пытаюсь найти способ доступа к переменной модуля по имени, но пока ничего не нашел. Что я использую сейчас:

var = eval('myModule.%s' % (variableName))

но он нечеткий и прерывает проверку ошибок IDE (т. е. в Eclipse/pydev import myModule помечен как неиспользуемый, в то время как он необходим для вышеуказанной строки). Есть ли лучший способ сделать это? Возможно, встроенная функция модуля, которую я не знаю?

2 ответов


import mymodule

var = getattr(mymodule, variablename)

getattr(themodule, "attribute_name", None)

третий аргумент является значением по умолчанию, если атрибут не существует.

от https://docs.python.org/2/library/functions.html#getattr

возвращает значение именованного атрибута object. имя должно быть строкой. Если строка является именем одного из атрибутов объекта, то результатом является значение этого атрибута. Например, getattr (x, 'foobar') эквивалентен x.фубар. Если именованный атрибут делает не существует, по умолчанию возвращается, если указано, в противном случае возникает AttributeError.