Python 在类中使用execfile获取参数时出现问题

Python 在类中使用execfile获取参数时出现问题,python,class,Python,Class,我有一个类似于中第一个问题的问题,据我所知,这个问题没有得到回答 我有一个文件“config.py”,其中包含许多类要使用的参数(这个config.py文件将更改),但是我无法通过execfile将这些参数传播到类中 在一段示例代码中: class Class(): def __init__(self): execfile("config.py") print x # config.py x = "foo" >>> t = Class

我有一个类似于中第一个问题的问题,据我所知,这个问题没有得到回答

我有一个文件“config.py”,其中包含许多类要使用的参数(这个config.py文件将更改),但是我无法通过execfile将这些参数传播到类中

在一段示例代码中:

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
class()
定义初始化(自):
execfile(“config.py”)
打印x
#config.py
x=“foo”
>>>t=类()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第4行,在_init中__
NameError:未定义全局名称“x”
欢迎使用任何帮助,或者从要在类中使用的文件中检索参数的更好方法


非常感谢。

我不明白您想做什么(但我不喜欢,这就是我),但要解决您的问题,请执行以下操作(在python2.6中进行测试):

但从以下方面:

默认局部变量的作用如所述 对于下面的函数locals(): 对默认局部变量的修改 不应尝试使用字典。 如果需要,请传递显式局部变量字典 您需要查看代码对系统的影响 函数execfile()后的局部变量 返回。无法使用execfile() 可靠地修改函数的 当地人

关于:

欢迎任何帮助,或者更好的帮助 从中检索参数的方法 类中要使用的文件


您可以使用import.

即使在Python文件中保存配置设置可能很方便,我建议不要使用它。我认为这会带来一系列你不想处理的问题。任何东西都可以放在配置文件中,包括恶意代码

我将使用模块或模块来保存配置


如果您在这两者之间选择有困难,我建议使用json模块。Json是一种简单而灵活的结构化数据格式。

@Jdog:with
globals()
变量将在全局范围内设置,config.py中的变量将在模块中的任何位置都可用。为了确保这是您想要的:)谢谢,我将查看json。目前应该足够安全,因为只有我会使用或访问该程序:)
class Class():
    def __init__(self):
        execfile('config.py', locals())  # Not recommanded, maybe you want globals().
        print x