2017-01-24 27 views
-1

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

这是我的代码。

文件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'有相同的范围,但它不会。我怎样才能解决这个问题?

+0

您认为'class.py'会搜索哪些'globals'?这就是为什么你基本上不会在生产代码中看到像'globals()'(或'locals()'等)的东西。你几乎肯定有一个[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – TigerhawkT3

+0

'class test'的词法范围是'class.py',而不是'a.py',所以它不会在'a.py'中看到变量。 – tdelaney

+0

题外话:因为“class”是一个Python关键字,所以你可能永远不会想要命名一个要导入的模块'class.py',因为你不能执行'import class'。 – martineau

回答

1

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

import a 

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

print(a.aa) 

虽然有很多方法可以做到这一点,这是不可取尝试使用一个字符串作为一个变量名。相反,您应该使用数据结构,如字典。

相关问题