选择要以编程方式访问的属性

时间:2016-12-19 05:37:07

标签: python

假设:

import configs

thingToLook = 'value'

channels = configs.value

我可以做点什么吗

channels = config[thingToLook]

相当于

channels = config.value 

如果我这样做

channels = configs[thingToLook]

我明白了:

TypeError: 'module' object has no attribute '__getitem__'

我正在尝试以编程方式选择要从configs获取的属性,以便我可以通过字符串进行设置。

2 个答案:

答案 0 :(得分:2)

与JavaScript不同,Python区分项(括号访问)和属性(点访问)。用于访问其中一个语法的语法(通常)不能用于访问另一个语法。

您可以使用getattr功能动态查找属性:

getattr(configs, thinkToLook)

并且如果找不到任何内容,可以选择设置默认值:

getattr(configs, thinkToLook, False)

答案 1 :(得分:2)

config.valueconfig['value']不一样。他们调用实例的不同方法。

config.valueconfig.__getattr__('value')相同。

config['value']config.__getitem__('value')相同。

有关详细信息,请查看以下内容:https://docs.python.org/2/reference/datamodel.html