如何在模块内部动态添加属性?
假设在一个模块里,我想定义:
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'])