2010-08-13 75 views
3

說一個模塊中我想定義:如何從該模塊內動態添加屬性到模塊?

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

對於一些集(在這種情況下,我選擇了字母)。我如何在當前模塊上動態設置屬性?類似於:

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

這不起作用,但是會發生什麼? (我的理解是模塊中的globals()指向該模塊的屬性的字典,但如果錯誤的話,請隨時糾正我)。

+0

而不是鍵入了' 'A', 'B' .. 。'z'',請嘗試下面的代碼:'[chr(a)for a range(97,123)]',這會導致相同的結果。 – 2010-08-13 16:35:05

+0

你也可以嘗試:'從字符串導入小寫字母' – razpeitia 2010-08-13 18:21:14

回答

10

globals()返回當前模塊的字典,因此您可以像添加任何其他字典一樣向其添加項目。嘗試:

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

或消除對全局(重複調用):

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

甚至:

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