如何通过for循环操纵对象

2024-04-19 22:08:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下代码:

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循环中新创建的对象,因此输出将是:

^{2}$

Tags: 对象代码inselfobjdefaultfordata
1条回答
网友
1楼 · 发布于 2024-04-19 22:08:45

实际上,您正在循环一个刚刚创建的列表。之后你就不再参考名单了。如果您在函数调用中这样做,您肯定无法在另一个范围中更改变量。你知道吗

但是,您可以更改收到的列表(作为参数,在hipotectical函数中)。尝试以下操作:

list = [x, y]
for i, obj in enumerate(list):
    list[i]=C(999)
    print list[i].data

print list[0].data
print list[1].data

相关问题 更多 >