0

我已经学习 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 引用后,我认为我已经掌握了它,但显然没有。

这一切的结果只是能够遍历对象实例的字典并运行包含在外部类中的一系列各种检查函数等。

4

3 回答 3

1

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

于 2012-12-27T21:01:47.520 回答
0

如果您在方法中声明它,我不确定 global 是否会起作用,因为这在技术上是一个本地命名空间。尝试将其放在主要和总和之外。

于 2012-12-27T20:59:44.497 回答
0

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

我认为您还需要在 test.py 中将“z”定义为全局变量:

import testClass

dict = {}
global z = 5

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

print dict['test'].sum()
于 2012-12-27T21:02:47.887 回答