On Wed, Aug 11, 2010 at 3:00 PM, Steven D'Aprano <[email protected]> wrote:
>> * The decorator returns the original function (I suppose a reference
>> to itself is okay?)
>
> There's no reason why a function can't have an attribute that refers to
> the function itself. It works fine:
Yes. But it's more common for the original function to have be
modified in some way. e.g.:
def autodoc(f):
f.__doc__ += document_args(f)
return f
@autodoc
def f(x, y):
"""Add two numbers"""
return x + y
And then f.__wrapped__ is not particularly useful because the original
function no longer exists and odd things will happen. For example, in
the code above autodoc(f.__wrapped__).__doc__ will not equal
f.__doc__.
>> * The decorator returns the a function that is already decorating
>> something else.
>
> That shouldn't make any difference. Given:
>
> @wraps(f)
> def func(*args):
> do_something()
> return f(*args)
>
> then func.__wrapped__ gives f. If f itself wraps (say) g, and g wraps h,
> then you have:
I guess my description of the problem wasn't clear. I meant:
def _debug(*args, **kwargs)
print args, kwargs
def mock(f):
return _debug
@mock
def plus(a, b):
return a + b
@mock
def prod(a, b):
return a * b
Schiavo
Simon
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com