我需要访问全局变量(g)。它存在于类中的另一个python文件中。请建议我如何访问。
test1.py:
class cls():
def m1(self):
inVar = 'inside_method'
global g
g = "Global"
x = 10
y = 20
print("Inside_method", inVar)
print (x)
print (y)
print (g)
obj = cls()
obj.m1()
test2.py:
from test1 import *
print (cls.m1) # I can access all variables in method
print (cls.m1.g) # getting error while accessing variable inside the function
我希望从我的test2.py访问变量'g'。你能帮我一下吗?
答案 0 :(得分:2)
全局变量是 module 的属性,而不是c1
类或m1
方法的属性。因此,如果您导入模块而不是导入模块中的所有名称,则可以在其中访问它:
import test1
# references the `m1` attribute of the `cls` name in he `test1` module
# global namespace.
print(test1.cls.m1)
# references the `g` name in he `test1` module global namespace.
print(test1.g)
您还需要在cls().m1()
模块的顶层运行test1
表达式,因此它会在任何东西首次导入test1
时执行。这意味着您的from test1 import *
表达式也在您的g
命名空间中创建了一个名称test2
:
from test1 import * # imported cls, obj and g
print(g) # "Global"
但是,该引用不会随对test1.g
全局变量的任何分配而改变。