Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import functools
- def show_details(name, f):
- """Show details of a callable object."""
- print '%s:' % name
- print ' object:', f
- print ' __name__:',
- try:
- print f.__name__
- except AttributeError:
- print '(no __name__)'
- print ' __doc__', repr(f.__doc__)
- print
- return
- def simple_decorator(f):
- @functools.wraps(f)
- def decorated(a='decorated defaults', b=1):
- print ' decorated:', (a, b)
- print ' ',
- f(a, b=b)
- return
- return decorated
- def myfunc(a, b=2):
- "myfunc() is not complicated"
- print ' myfunc:', (a, b)
- return
- # The raw function
- show_details('myfunc', myfunc)
- myfunc('unwrapped, default b')
- myfunc('unwrapped, passing b', 3)
- print
- # Wrap explicitly
- wrapped_myfunc = simple_decorator(myfunc)
- show_details('wrapped_myfunc', wrapped_myfunc)
- wrapped_myfunc()
- wrapped_myfunc('args to wrapped', 4)
- print
- # Wrap with decorator syntax
- @simple_decorator
- def decorated_myfunc(a, b):
- myfunc(a, b)
- return
- show_details('decorated_myfunc', decorated_myfunc)
- decorated_myfunc()
- decorated_myfunc('args to decorated', 4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement