returned arguments of the method they're attached to.
>>> def c(self, method, *args):
- ... print '\\n '.join([
+ ... print('\\n '.join([
... 'callback:',
... 'class: %s' % self,
... 'method: %s' % method,
- ... 'returned: %s' % args])
+ ... 'returned: %s' % args]))
For some class, decorate any functions you're interested in
attaching callbacks too. Also, add a `_callbacks` attribute
... @callback
... def xyz(self):
... "xyz's docstring"
- ... print 'usual xyz business'
+ ... print('usual xyz business')
... return (0, 1, 1, 2, 3, 5)
...
... @callback
... def abc(self):
... "abc's docstring"
- ... print 'usual abc business'
+ ... print('usual abc business')
...
>>> x = X()
The decorated method preserves the original docstring.
- >>> print x.xyz.__doc__
+ >>> print(x.xyz.__doc__)
xyz's docstring
So far, we haven't attached a callback to `abc`.
array of callbacks in series.
>>> def d(self, method, *args):
- ... print 'callback d'
+ ... print('callback d')
>>> x._callbacks['abc'] = [d, c, d]
>>> r = x.abc() # doctest: +ELLIPSIS
usual abc business
returned arguments of the method they're attached to.
>>> def c(self, method, *args, **kwargs):
- ... print '\\n '.join([
+ ... print('\\n '.join([
... 'callback:',
... 'class: %s' % self,
... 'method: %s' % method,
... 'args: %s' % (args,),
- ... 'kwargs: %s' % kwargs])
+ ... 'kwargs: %s' % kwargs]))
Now place `in_callback` calls inside any interesting methods.
...
... def xyz(self):
... "xyz's docstring"
- ... print 'usual xyz business'
+ ... print('usual xyz business')
... in_callback(self, 5, my_kw=17)
... return (0, 1, 1, 2, 3, 5)
...
... def abc(self):
... "abc's docstring"
... in_callback(self, p1=3.14, p2=159)
- ... print 'usual abc business'
+ ... print('usual abc business')
...
>>> x = X()
array of callbacks in series.
>>> def d(self, method, *args, **kwargs):
- ... print 'callback d'
+ ... print('callback d')
>>> x._callbacks['abc'] = [d, c, d]
>>> r = x.abc() # doctest: +ELLIPSIS
callback d