如何在模块内部动态添加属性?

3 投票
1 回答
1036 浏览
提问于 2025-04-16 02:45

假设在一个模块里,我想定义:

a = 'a'
b = 'b'
...
z = 'z'

对于某个集合(在这个例子中我选择了字母)。我该如何动态地设置当前模块的属性呢?类似于:

for letter in ['a', ..., 'z']:
    setattr(globals(), letter, letter)

这个方法不行,那我该用什么呢?(另外,我的理解是模块中的globals()指向的是一个字典,里面存储着该模块的属性,如果我说错了,请随时纠正我)。

1 个回答

10

globals() 会返回当前模块的字典,所以你可以像对待其他字典一样往里面添加项目。你可以试试:

for letter in ['a', ..., 'z']:
    globals()[letter] = letter

或者为了避免重复调用 globals(),你可以这样做:

global_dict = globals()
for letter in ['a', ..., 'z']:
    global_dict[letter] = letter

甚至可以这样:

globals().update((l,l) for l in ['a', ...,'z'])

撰写回答