在Python中以编程方式创建变量[重复]

2024-01-25

可能的重复:
如何以编程方式设置全局(模块)变量? https://stackoverflow.com/questions/1429814/how-to-programmatically-set-a-global-module-variable

我有一个名为 Variable 的类,定义如下:

class Variable():
    def __init__(self, name):
        self.name = name
        self._value = None
    def value(self):
        return self._value
    def __repr__(self):
        return self.name

我想创建 26 个大写单字母变量实例,如下所示:

A = Variable('A')
B = Variable('B')
...
Z = Variable('Z')

到目前为止,我已经尝试了各种解决方案,我想出的最好的解决方案是:

from string import uppercase
for char in uppercase:
    exec "%s = %s" % (char, Variable(str(char))) in None

但是,这不会运行并给出以下错误:

Traceback (most recent call last):
  File "C:\Users\Administrator\Dev\python\truthtable\truthtable.py", line 7, in <module>
    exec "%s = %s" % (char, Variable(str(char))) in None
  File "<string>", line 1, in <module>
NameError: name 'A' is not defined

我究竟做错了什么?


from string import uppercase
_g = globals()
for char in uppercase:
    _g[char] = Variable(char)

这是否是一个good这个想法仍然值得怀疑:)

这仅适用于globals()(即模块级分配),因为语言定义明确指出修改由locals()实际上可能不会改变任何局部变量的值。

你也可以做类似的事情__dict__一个类或实例的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中以编程方式创建变量[重复] 的相关文章

随机推荐