2016-07-05 46 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](...)