访问外部类中的全局变量

时间:2012-12-27 20:46:22

标签: python global-variables scope python-2.6

我一直在学习Python大约一个星期左右,在我的代码变得非常大并且有点乱后我决定将它分解成单独的类文件等等但是我遇到了一些问题。问题。

我已经尝试谷歌搜索并在这里搜索,但我找不到我的具体问题,请原谅我,如果有人问过。

考虑2个文件。 test.py和testClass.py我在test.py中有一个全局变量,它也将在test.py中设置,但我想在testClass.py中的函数中访问该变量。这里有一些代码可以帮助解释。

test.py看起来像这样:

import testClass

dict = {}
z = 5

dict['test'] = testClass.testClass(1, 3)

print dict['test'].sum()

testClass.py看起来像这样:

class testClass:
    def __init__(self, x, y):
        self.foo = x
        self.bar = y

    def sum(self):
        global z
        return self.foo + self.bar + z

目前翻译正在吐口水:

NameError: global name 'z' is not defined

在重新阅读类和变量范围的Python引用之后,我认为我已经将其固定,但显然没有。

这一切的结果只是为了能够通过对象实例的字典来运行并运行外部类中包含的各种检查函数等的序列。

3 个答案:

答案 0 :(得分:1)

Global是文件(模块)的全局文件,因此您可能希望将其包含在类中。

答案 1 :(得分:0)

如果你在方法中声明它,那么我不确定全局是否会起作用,因为从技术上讲它是一个本地命名空间。试着把它放在主要和总和之外。

答案 2 :(得分:0)

需要在任何可能改变它们的函数中定义全局变量。

我认为你需要定义' z'作为test.py中的全局:

import testClass

dict = {}
global z = 5

dict['test'] = testClass.testClass(1, 3)

print dict['test'].sum()