如何在一个循环中初始化来自不同类的对象?

时间:2019-04-07 09:57:42

标签: python

我正在尝试从不同的类初始化对象,并且args在列表中。类的类型需要由列表中的args设置,我想避免使用条件语句,该条件语句可以针对更多类进行扩展。 启动的对象将被添加到对象列表中。

例如:

example_list = [['x', 20], ['p', 50], ['d', 100]

obj_list = []

for i in example_list:
    if i[0] == 'x':
        xylophone = Xylophone('x', 20)
        obj_list.append(xylophone)
    if i[0] == 'p':
        piano = Piano('p', 50)
        obj_list.append(piano)
    if i[0] == 'd':
        drum = Drum('d', 100)
        obj_list.append(drum)

1 个答案:

答案 0 :(得分:0)

由于类是python中的对象,因此可以

classes = dict(
    x=Xylophone,
    p=Piano,...)

for class_name, arg in my_list:
    cls = classes[class_name]
    object = cls(class_name, arg)