__iadd__ is supposed to /return/ something, most likely self. My bad.
On Wed, 29 Aug 2007 20:49:59 +0000, Moon wrote: > class Vec(list): > def __init__(self): > list.__init__(self, [0.0, 0.0]) > > def __iadd__(self, other): > assert isinstance(other, Vec) > self[0] += other[0] > self[1] += other[1] > print "right now, v is: ", self, " as you'd expect" > > > v = Vec() > w = Vec() > w[0] = 1.0 > w[1] = 2.0 > print "v starts:", v > > print "(w is:", w, " which is fine)" > > v += w > > print "(w still is:", w > > print "after iadd, v: ", v, " <-- becomes None! What the hey?" > > > # - running it: > > py> python badvec.py > v starts: [0.0, 0.0] > (w is: [1.0, 2.0] which is fine) > right now, v is: [1.0, 2.0] > (w still is: [1.0, 2.0] > later, v is: None <-- becomes None! What the hey? > > py> python -V > Python 2.5.1 > > -- Any explanation from a guru? > > Thanks much... -- http://mail.python.org/mailman/listinfo/python-list