如何从该模块中动态向模块添加属性?

时间:2010-08-13 16:10:51

标签: python

在我想要定义的模块中说:

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

对于某些集合(在这种情况下,我选择了字母)。如何在当前模块上动态设置属性?类似的东西:

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

这不起作用,但会怎样? (另外我的理解是模块中的globals()指向该模块属性的字典,但如果这是错误的话,请随时纠正我。)

1 个答案:

答案 0 :(得分: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'])