{移动到创建方法的数组中。在
您使用的是所有对象之间的共享数组。在
第一个显示不同的原因是,在构造新的多边形对象之前打印该数组的内容,从而践踏数组内容。如果你把它们放在身边,以后再检查它们,它们看起来都和你上次生成的一样。在
哦,在发帖的时候尽量不要简化代码。总是发布完整但简短的程序来重现问题。在
下面是一个简短但完整的程序,它演示了您遇到的问题:from random import randrange
class Poly:
points = [0]*8
def __init__(self, width=100, height=100):
for i in range(0, 8, 2):
self.points[i] = randrange(width)
self.points[i+1] = randrange(height)
return
p1 = Poly()
print "p1:", p1.points
p2 = Poly()
print "p2:", p2.points
print "p1:", p1.points
样本输出:
^{pr2}$
注意p1是如何变化的。在
固定代码可以简单到:from random import randrange
class Poly:
def __init__(self, width=100, height=100):
self.points = [0]*8
for i in range(0, 8, 2):
self.points[i] = randrange(width)
self.points[i+1] = randrange(height)
return
尽管我更喜欢@Doug发布的append变量{a2}