我遇到的问题类似于this question中的第一个问题,据我所知,这个问题没有得到答复。
我有一个文件“config.py”,其中包含一个类要使用的很多参数(这个config.py文件会改变),但是我无法通过execfile将它们传播到类中。 / p>
在一段代码示例中:
class Class():
def __init__(self):
execfile("config.py")
print x
# config.py
x = "foo"
>>> t = Class()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in __init__
NameError: global name 'x' is not defined
任何帮助欢迎,或者从要在类中使用的文件中检索参数的任何更好的方法。
非常感谢。
答案 0 :(得分:1)
我没有得到你想要的东西(但我不喜欢它,这只是我)但是要解决你的问题吗(在python2.6中测试):
class Class():
def __init__(self):
execfile('config.py', locals()) # Not recommanded, maybe you want globals().
print x
但是来自doc:
请注意
默认的本地行为如上所述 对于函数locals()如下: 修改默认的本地人 不应该尝试字典。 传递显式的本地词典,如果 你需要看到代码的效果 函数execfile后的locals() 回报。 execfile()不能使用 可靠地修改功能 本地人。
和关于:
欢迎任何帮助,或者更好 从中检索参数的方法 一个要在类中使用的文件。
您可以使用导入。
答案 1 :(得分:1)
尽管将配置设置保存在Python文件中可能会很方便,但我建议不要这样做。我认为这会打开一系列您并不想真正处理的问题。任何东西都可以放在你的配置文件中,包括恶意代码。
我会使用json模块或ConfigParser模块来保存我的配置。
如果您在这两者之间选择时遇到问题,我会推荐使用json模块。 Json是一种简单而灵活的结构化数据格式。