Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么这不能按预期工作(至少对我而言)?我想不通为什么。
class Fred: def __init__(self): self.a=0 fred=Fred() lista=[] for i in range(5): fred.a=i lista.append(fred) for i in lista: print(str(i.a))
我得到的只是数字 4 的 5 倍,而不是从 0 到 4。有什么意见吗?谢谢
发生的情况是每次循环在for i in range(5). 如果您移动该fred=Fred()循环内部并每次都创建一个新对象,那么您应该会看到预期的结果。
for i in range(5)
fred=Fred()
您有一个Fred实例,并继续将该实例添加到列表中,a并在执行此操作时更改其属性。添加到列表不会复制Fred对象;它只是添加了对同一对象的另一个引用。您可以通过Fred在循环的每次迭代中创建一个新的来获得预期的行为。
Fred
a