(Edit: randrange is just random.randrange, I didn't write my own RNG)
I'm trying to create a list of instances of a class I defined. Here's the entire class (by request):
from random import randrange
class Poly:
points = [0] * 8
fill = 'red'
alpha = 1.0
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)
self.alpha = random()
return
Seems to work fine:
>>> for i in range(5):
Poly().points
[28, 64, 93, 26, 15, 31, 44, 50]
[24, 14, 47, 14, 35, 17, 63, 62]
[99, 28, 90, 29, 56, 59, 57, 33]
[62, 56, 48, 28, 40, 73, 70, 99]
[99, 32, 27, 99, 42, 57, 86, 12]
But if I try to create a list of these objects, I get separate instances (different memory addresses) but they all have the same random values:
>>> p = []
>>> for i in range(5):
p.append(Poly())
>>> p
[<gen_image.Poly instance at 0x02D773C8>, <gen_image.Poly instance at 0x02D77FD0>, <gen_image.Poly instance at 0x0321D030>, <gen_image.Poly instance at 0x02D51E40>, <gen_image.Poly instance at 0x02D51DA0>]
>>> for poly in p:
print poly.points
[75, 18, 5, 76, 6, 64, 95, 54]
[75, 18, 5, 76, 6, 64, 95, 54]
[75, 18, 5, 76, 6, 64, 95, 54]
[75, 18, 5, 76, 6, 64, 95, 54]
[75, 18, 5, 76, 6, 64, 95, 54]
What's going on here? And what's the right way to do what I'm trying to do?