在Python中以编程方式创建变量

发布于 2021-01-29 18:28:00

我有一个名为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个Variable的大写单字母实例,如下所示:

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

我究竟做错了什么?

关注者
0
被浏览
140
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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


    这是一个 主意还是值得怀疑的:)

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

    您也可以__dict__对类或实例执行相似的操作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看