将列表中的所有对象转换为子类。

时间:2014-04-16 09:14:11

标签: python list object

我有2个类,一个父类和一个继承它的类。但是,在列表中,我有父类的任意数量的对象。我需要将它们全部转换为子类。

代码的真正简化版本如下所示:

class parent(object):
    def __init__():
        self.a = 1

class child(parent):
    def __init__():
        self.b = 2

list_of_objects = []

for x in range(0, 10)
    a = parent()
    list_of_objects.append(a)

我很确定我可以使用以下行在循环中逐个转换对象1。

a.__dict__ = b.__dict__

但有没有办法立即转换整个列表?

1 个答案:

答案 0 :(得分:1)

除非动态添加实例属性,否则不应使用a.__dict__ = b.__dict__ - __dict__仅用于动态添加的对象。如果您确定这些类是纯python并且内部对象属性的命名方式相似,那么可以 a.__class__=b.__class__

如果您能够创建child的实例,则可以使用更简洁的方法来定义从child实例创建parent实例的函数。您可以使用map或列表推导来避免循环:

def parent_to_child(parent):
    newchild= child()
    newchild.property= parent.property
    #...

list_of_children= map(parent_to_child, list_of_parents)