我想导入名为" config
"的模块我想要导入config.times
。但在我的代码中,times
是列表name_list
中的元素,它表示:
name_list = ['times','date','hours']
。
当我想使用config.times
时,我会尝试config.name_list[0]
。当然有一个错误" 'module' object has no attribute 'name_list'"
。那么我该如何解决呢?谢谢。
---更多详情:
我的代码是:config.py,main.py。在config.py,times = [' 00:00:00',' 12:00:00'],并在主要.py,name_list = [' times',' date',' hours'],我想在main.py中执行exec now = config.times
。
答案 0 :(得分:2)
如果我理解正确,您希望从导入的模块中访问times
变量,但您希望该名称(times
)来自另一个变量,而不是硬编码
这可以通过几种方式实现。最简单的可能是使用getattr
函数从模块对象中获取属性:
import config
name = "times" # or wherever, e.g. name_list[0]
results = getattr(config, name) # will get a reference to config.times
我不确定这样做真的是一个好主意。一般来说,变量名(例如times
模块中的config
)应该供程序员解释。它们不应该是数据。如果要按名称查找数据,通常应使用字典来存储键和值,而不是使用模块的命名空间。
例如,您的config
模块可能有一个名为data
的字典,您可以将当前的times
值移至data['times']
。然后按名称查找值只是字典查找:config.data[name]
。
答案 1 :(得分:0)
尝试在main.py中使用以下内容:
from config import times
或
name_list = ['config.times','date','hours']
从此处开始编辑,以获得更多说明 然后使用:
eval(name_list[0]) # for evaluating config.times
请删除downvote。