假设我有以下代码:
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
答案 0 :(得分:2)
您实际上正在循环您刚刚创建的列表。之后您不再参考该列表。如果你在函数调用中执行此操作,则肯定无法更改另一个范围中的变量。
但是,您可以更改收到的列表(作为参数,在hipotetical函数中)。尝试这样的事情:
ls