2015-05-27 107 views
1

有沒有一種方法可以使用字符串(在我的情況下是從文件中讀取)來查找名稱與字符串匹配的類,然後創建該類的實例。例如:根據類的字符串名稱創建類的實例

class FirstClass: 
    def __init__(self, arg1): 
     self.arg = arg1 

values = ','.split('FirstClass', 'argument') 
# need the magic for this: 
values[0](*values[1:]) 

使用values[0]當然,但這裏是行不通的,因爲它是一個字符串,而不是一類。有沒有辦法自動將字符串轉換爲類?特別是如果我有很多類,並且無法預先知道要實例化哪一個類,例如從CSV讀取值並希望正確的類處理一行。

回答

4

您可以分別使用locals()globals()按名稱訪問變量。在你的情況下,這樣可以這樣工作:

locals()[values[0]](*values[1:]) 
+3

雖然你可能想要'globals()'以便它在一個函數範圍內工作。另請參閱此答案,如果該類是您要動態加載的另一個模塊的一部分http://stackoverflow.com/questions/452969/does-python-have-an-equivalent-to-java-class-forname –

相關問題