我有2个不同的文件。第一个,定义了很多类:
# File 1:
class Class1:
class Class2:
#...
这些类使用一些定义为全局变量。
# File 1:
class Class1:
def __init__(self, var1):
global glob_variable_1
# Other stuff
class Class2:
#...
在文件2中,我从第一个文件导入所有类,然后使用它们。在该文件的主要部分,我定义了全局变量。
# File 2
from File1 import Class1, Class2
if __name__ == '__main__':
global glob_variable_1
glob_variable_1 = 10
# Other stuff
Class1(var1)
我收到错误NameError: name 'glob_variable_1' is not defined.
。我想
这是名称空间和范围的问题,但我不太了解它是如何工作的。有人可以帮我吗?谢谢。
答案 0 :(得分:0)
您有两个glob_variable_1
名称,每个名称空间中都有一个,您必须决定使用哪个名称:
# File 1:
# defined here, outside the class
glob_variable_1 = None
class Class1:
def __init__(self, var1):
global glob_variable_1
glob_variable_1 = 42
# Other stuff
class Class2:
pass
具有:
# File 2
from File1 import Class1, Class2
import File1
if __name__ == '__main__':
global glob_variable_1
# Other stuff
var1 = 1234
obj = Class1(var1)
glob_variable_1 = 666
print(glob_variable_1)
print(File1.glob_variable_1)
礼物:
666
42
比在模块中使用全局变量更好的是使用函数来设置/获取类或文件。