如何使用其他范围的字符串访问变量?

时间:2017-01-24 01:58:45

标签: python scope

我想使用字符串从一个文件访问变量到其他文件中的类。

这是我的代码。

档案a.py

aa = 12
m = test('aa')

档案class.py

class test:
    def __init__(self,string):
        try:
            self.variable = globals()[string]
        except KeyError:
            print('there is no variable named ' + string)

以上test.py代码返回序列字符串'没有名为blrblr'的变量。我认为如果Python具有词法范围,那么调用test()类时的范围应与'aa'具有相同的范围,但事实并非如此。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

globals()会返回当前模块的属性字典。访问不同文件中代码的常用方法是使用import。例如

import a

现在,您可以直接在代码中访问a.py中的变量:

print(a.aa)

虽然有办法,但不建议尝试使用字符串作为变量名。相反,您应该使用数据结构,例如字典。