Short, crazy example: list-derived class, with __iadd__ <- nevermind, me == idiot

Moon no.email.here at zombo.com
Wed Aug 29 17:00:19 EDT 2007


__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...




More information about the Python-list mailing list