Augmented arithmetic operations (iadd, etc.) return new Dingus instead of self
If I say:
d = Dingus() d += 5
I would expect to see the += (iadd) call logged on d. That's not what happens, though:
>>> d += 5 >>> d.calls 
When iadd isn't defined, += calls add and reassigns the local variable. So the d we check the calls for isn't actually the same d:
>>> print d <Dingus dingus_4297687248> >>> d += 5 >>> print d <Dingus dingus_4297687248.__add__>
This is very confusing. += shouldn't modify the Dingus, but should record the call.