如何通过for循环操作对象

时间:2016-06-14 20:38:06

标签: python reference

假设我有以下代码:

class C:
    def __init__(self, data):
        self.data=data #default

x=C(1)
y=C(2)

for obj in [x, y]:
    obj.data+=1 # manipulate object referenced to by x or y

    obj=C(999) # create a new object
    print obj.data

print x.data
print y.data

输出是:

  

999 999 2 3

如果我理解正确,在for循环中,对象会在obj.data+=1中被操纵,但在obj=C(999)中创建新对象时,临时别名obj和原始x和y不再指向同一个对象。

所以我的问题是:如何遍历多个已知对象并能够为它们分配新对象?我的例子,这意味着x和y将指向for循环中新创建的对象,因此输出将为:

  

999 999 999 999

1 个答案:

答案 0 :(得分:2)

您实际上正在循环您刚刚创建的列表。之后您不再参考该列表。如果你在函数调用中执行此操作,则肯定无法更改另一个范围中的变量。

但是,您可以更改收到的列表(作为参数,在hipotetical函数中)。尝试这样的事情:

ls