列表中对象的字段填充了相同的值

时间:2017-04-05 10:21:55

标签: python python-3.x

想象一下,我需要用一些类的对象和设置对象来填充一个列表。领域。例如,我可以这样做(不是最好的方式,根据最佳实践,但对我来说更有趣的是它如何在幕后工作):

import random

class Point:
   coordinates = [0, 0]

ex = []
for i in range(0, 10):
    ex.append(Point())
    ex[i].coordinates[0] = random.randint(0, 25)
    ex[i].coordinates[1] = random.randint(0, 25)

for i in ex:
    print(i.coordinates)
    print(id(i.coordinates))

在此之后,当ex列表中的所有点包含相同的coordinates对象(相同的id)时,我最终会遇到这种情况。但是,如果我更改分配每个列表元素以分配列表本身:

ex[i].coordinates = [random.randint(0, 25), random.randint(0, 25)]

它按预期工作。

有人能指出它是如何运作的吗?这两种方法之间的区别是什么?

0 个答案:

没有答案