0

我有类A,BC继承自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)

但它没有用。

4

1 回答 1

2

我不确定“创建相同的对象”是什么意思。如果您的意思是“创建一个全新的相同类型的不同对象”,那么试试这个:

obj_2 = type (obj)(2)

您的代码,重写为列表理解:

l2 = [type(obj)(2) for obj in l]
于 2013-11-06T04:29:48.423 回答