我有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__
但有没有办法立即转换整个列表?
答案 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)