2012-11-06 25 views
1

我想實例化一個類對象,其所需的名稱保存在其他地方創建的變量中。Python - 用var值命名一個類的實例

我無法弄清楚如何讓類的實例擁有變量的名稱。

例如:

class foo: 
    def __init__(self): 
     self.var1 = "bar" 

if __name__ == "__main__": 
    test = "a" # returned by another func. 
    [string held by variable 'test'] = foo() 
    print a.var1 

這可能嗎? (或者甚至是可取的...)

回答

2

這是不可取的,因爲當你直到運行時才知道它的名字時,它很難用變量a進行編程。

你可能會考慮使用的字典來代替:

data = {} 
test = func() # "a" 
data[test] = foo() 
+0

我只是遇到了這個問題,因爲後來我想到了接下來我想用類功能來做什麼......嗯。時間重新思考。謝謝。 –

0

一個功能可能是更好 - 這樣,你需要做的工作被封裝,並且可以重複使用:

def do_work(an_instance_of_foo): 
    print an_instance_of_foo.var1 

class foo: 
    def __init__(self): 
     self.var1 = "bar" 

if __name__ == "__main__": 
    do_work(foo()) 

如果你還需要這個詞,你可以把它傳遞給函數:

def do_work(an_instance_of_foo, my_word): 
    # etc. 

或者,你可以使用一個dicti如果需要將foo的實例與特定名稱相關聯,則可以使用onary作爲命名空間(如@unutbu建議的那樣)。