我有从A
继承的课程B
,C
和Foo
。他们的__init__
方法都做了不同的事情,但有一个类似的签名:它们都在i
中使用了一个参数__init__
。这些类的一些实例位于列表l
中,并且全部混合在一起。在l
中,所有对象都有i=1
。
我需要浏览l
,对于我看到的每个对象,我需要创建相同的对象,但使用i=2
而不是i=1
进行实例化。
我该怎么做?
我试过了:
l2 = []
for obj in l:
obj_2 = type (obj).__init__(2)
l2.append(obj_2)
但它不起作用。
答案 0 :(得分:2)
我不确定“创建同一个对象”是什么意思。如果您的意思是“创建一个同类型的全新独特对象”,那么试试这个:
obj_2 = type (obj)(2)
您的代码,重写为列表理解:
l2 = [type(obj)(2) for obj in l]