This is an experiment to see how to create a Drop class that is used to track all operations performed on an object (as it happens, an event object, such as mouse position, key pressed, etc).
class Drop(object):
def __init__(self, name=''):
self._spy = []
self._name = name
def _op(self, fun, args=()):
self._spy.append((fun, args, ))
def __add__(self, b):
self._op('__add__', (self, b))
return self
def _show_spy(self):
return '\n'.join('{fun}(*{args})'.format(fun=fun, args=args)
for (fun, args) in self._spy)
def __repr__(self):
return self._name
a = Drop('a')
b = Drop('b')
print a
print b
print (a+b)._show_spy()
a b __add__(*(a, b))