想象一下,我需要用一些类的对象和设置对象来填充一个列表。领域。例如,我可以这样做(不是最好的方式,根据最佳实践,但对我来说更有趣的是它如何在幕后工作):
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)]
它按预期工作。
有人能指出它是如何运作的吗?这两种方法之间的区别是什么?