Can you fix up wrapper function argument signatures?
Gerard Brunick
gbrunick at andrew.cmu.edu
Mon Nov 27 17:40:55 EST 2006
Consider:
>>> def negate(func):
... def wrapper(*args, **kwargs):
... return not func(*args, **kwargs)
... return wrapper
...
>>> def f(x):
... return x > 10
...
>>> g = negate(f)
>>> g(20)
False
>>> g(5)
True
Now g has the argument signature of (*args, **kwargs). Pop-up help in
Python
Scripter(which is great by the way) tells me this, as does
>>> g.func_code.co_varnames
('args', 'kwargs')
Is there anyway to fix this in negate? I assume that I can't just start
changing things in g.func_code since the bytecodes depend on the order
of variables and lots of other stuff that I don't claim to understand.
Please note: From the new functools module, I see that one can set/update
__module__, __name__, __doc__, and __dict__ using the corresponding
attributes
from the wrapped function; however, none these fix up the argument signature
do they? (I'm still running 2.4, so I haven't tried it.)
Thanks,
Gerard
More information about the Python-list
mailing list