2014-02-25 41 views
7

我试图找到一种方法来访问模块变量的名称,但还没有发现任何东西。我使用的是现在的事情是:python通过名称获取模块变量

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

但它的模糊,打破IDE错误检查(即日食/ PyDev的进口Mymodule中被标记为未使用,而它的需要上面的行)。有没有更好的方法来做到这一点?可能是模块内置函数,我不知道?

+2

如果您提供示例代码,请使用'getattr' .. –

+0

@AshwiniChaudhary我会接受此答案。在网络上真的没有这样的例子。 – ducin

回答

17
import mymodule 

var = getattr(mymodule, variablename) 
3

getattr(themodule, "attribute_name", None)

第三种说法是,如果属性不存在默认值。

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

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