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