Short, crazy example: list-derived class, with __iadd__
Moon
no.email.here at zombo.com
Wed Aug 29 16:49:59 EDT 2007
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...
More information about the Python-list
mailing list