Trying to understand += better

Roy Smith roy at
Mon Nov 23 03:31:07 CET 2009

If I've got an object foo, and I execute: += baz

exactly what happens if foo does not have a 'bar' attribute?  It's
pretty clear that foo.__getattr__('bar') gets called first, but it's a
little murky after that.  Assume for the moment that foo.__getattr__
('bar') returns an object x.  I think the complete sequence of calls

foo.__getattr__('bar')  ==> x
x.__add__(baz)  ==> y
foo.__setattr__('bar', y)

but I'm not 100% sure.  It would be nice if it was, because that would
let me do some very neat magic in a system I'm working on :-)

How would things change if X defined __iadd__()?

More information about the Python-list mailing list