在python中跨类更改全局变量

fer*_*ard 1 python global-variables

我正在尝试更改跨类的全局变量。这是我的代码:

文件main.py

import class2

class first:
    def changeA(self):
        global a
        print a
        a += 2
        print a

test0 = first()
test1 = class2.second()
test2 = first()
test3 = class2.second()
test0.changeA()
test1.changeA()
test2.changeA()
test3.changeA()
Run Code Online (Sandbox Code Playgroud)

文件class2.py

a = 1

class second:
    def changeA(self):
        global a
        print a
        a += 1
        print a
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误:全局名称'a'未定义。有没有适当的方法来访问和更改python中跨文件的全局变量?提前致谢

Bak*_*riu 6

全局变量在python中不存在。

该global语句实际上是一个错误的语句。这意味着变量是模块的变量。python中没有全局名称空间之类的东西。

如果要从多个模块修改变量,则必须将其设置为属性:

import module

module.variable = value
Run Code Online (Sandbox Code Playgroud)

做一个简单的分配将简单地创建或修改模块的变量。代码

from module import variable

variable = value
Run Code Online (Sandbox Code Playgroud)

只是掩盖了使用该标识符创建新绑定后variable导入的值,但是的值不会更改。modulemodulevariable

总结:没有任何方法可以完全实现您想要的(尽管您想要的仍然是一种不好的做法,您应该尝试使用其他解决方案)。