2014-04-16 33 views
1

我有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) 

我敢肯定,我可以使用下面的行循环转换OBJETS 1 1。

a.__dict__ = b.__dict__ 

但有没有办法一次转换整个列表?

+1

超越“全部转换到子类”,什么是你想达到什么目的? – jonrsharpe

+0

顺便说一句,检查你附近的语法'for x in range(0,10)' – vaultah

+0

jon,这些对象来自另一个我通过API访问的程序。我需要用基础对象不允许的那些对象来做其他事情,所以我需要以某种方式转换它们。子对象更合适,所以我需要转换为 –

回答

1

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

如果您能够创建child的实例,则稍微更简洁一些的方法可能是定义一个函数,该函数从parent实例创建child实例。您可以通过避免使用map或列表解析循环:

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

list_of_children= map(parent_to_child, list_of_parents) 
相关问题