2016-07-05 45 views
0

我一直在尋找這個相當一段時間,也看了以前在Python中創建一個類問這樣的問題:使用字符串作爲類名

how to dynamically create an instance of a class in python?

Does python have an equivalent to Java Class.forName()?

Can you use a string to instantiate a class in python?

還有更多,其中一些他們導入類或在定義中以某種方式使用類的名稱。

編輯:

我需要一個列表作爲輸入,並創建班級,在列表中的名稱字符串。

store_list = {'store1', 'storeabc', 'store234'} 

現在我能做的,

store1 = type(store_list[0], (models.Model,), attrs) 
storeabc = type(store_list[1], (models.Model,), attrs) 
store234 = type(store_list[2], (models.Model), attrs) 

但我還是在代碼中使用類的名字在某種程度上,我不知道該列表會是怎樣的方式,和我想要從列表中取出名稱來創建類。

+1

您想從類創建一個對象還是要動態創建類本身?如果以後你有看過[這個問題](http://stackoverflow.com/questions/10555844/dynamically-creating-a-class-from-file-in-python)? – syntonym

+2

我們需要[MCVE] - 樣本輸入和預期輸出。 –

+0

增加了一些關於我想要做什麼的信息。 – Osiris92

回答

1

您可以將您動態創建的類存儲到字典中,將類名映射到類。這樣你就可以使用這樣的字典在代碼中稍後用名字訪問你的類,例如創建實例。 例如:

store_list = {'store1', 'storeabc', 'store234'} 
name2class = {} 
for name in store_list: 
    name2class[name] = type(name, (models.Model,), attrs) 
. . . 
my_instance = name2class[name](...)