字符串到全局变量?



我需要将 Dict 的一些键实例化为独立的全局变量。

(在您反对之前,让我提一下,这纯粹是为了测试目的,我知道它污染了全球范围。它不打算作为编程技术。

还行。现在不碍事了。如果我使用像下面这样的简单函数,它可以工作。

def items_as_vars(obj, lst) :
for i in lst :
globals()[i] = obj.g(i)
print i, obj.g(i)

items_as_vars(obj, ['圆形','正方形'](

打印圆圈

但是当我将其移动到单独文件中成为类方法的那一刻,它停止工作,即

class blah:
@staticmethod
def items_as_vars(obj, lst) :
for i in lst :
globals()[i] = obj.g(i)
print i, obj.g(i)

blah.items_as_vars(obj, ['圆形', '正方形'](

打印圆圈

NameError: name 'circle' is not defined

知道为什么吗? 通过"停止工作",我的意思是全局变量不再实例化。


更多信息:当类位于同一文件中时,它似乎有效,但当导入类时则不行!


修改为静态方法,这是相同的行为。

您需要使用__builtin__来创建跨模块变量。喜欢这个:

class SomeClass(object):
def g(self, x):
return x
def items_as_vars(self, lst) :
for i in lst :
import __builtin__
setattr(__builtin__, str(i), self.g(i))
print i, self.g(i)
In [9]: import test
In [10]: test.SomeClass().items_as_vars(['x', 'yz'])
x x
yz yz
In [11]: yz
Out[11]: 'yz'

相关内容

  • 没有找到相关文章

最新更新