python按名称获取模块变量

duc*_*cin 14 python variables module

我正在尝试找到一种通过名称访问模块变量的方法,但还没有找到任何东西.我现在使用的是:

var = eval('myModule.%s' % (variableName))
Run Code Online (Sandbox Code Playgroud)

但它是模糊的,并打破IDE错误检查(即在eclipse/pydev导入myModule标记为未使用,而上面的行需要它).有没有更好的方法呢?可能是模块内置函数我不知道?

Jay*_*hik 28

import mymodule

var = getattr(mymodule, variablename)
Run Code Online (Sandbox Code Playgroud)


cch*_*chi 5

getattr(themodule, "attribute_name", None)

如果该属性不存在,则第三个参数是默认值.

来自https://docs.python.org/2/library/functions.html#getattr

返回object的named属性的值.name必须是一个字符串.如果字符串是对象属性之一的名称,则结果是该属性的值.例如,getattr(x,'foobar')等同于x.foobar.如果named属性不存在,则返回default(如果提供),否则引发AttributeError.