If I've got an object foo, and I execute: foo.bar += 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 is: 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__()? -- http://mail.python.org/mailman/listinfo/python-list