使用字符串作为类名在python中创建一个类

时间:2016-07-05 09:35:23

标签: 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 个答案:

答案 0 :(得分:1)

您可以将动态创建的类存储到字典中,将类名映射到类。通过这种方式,您可以在代码中使用这样的字典按名称访问您的类,例如创建实例。 例如:

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