Gerard Brunick schrieb: > 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.)
You can use Michele Simionato's decorator-module. http://www.phyast.pitt.edu/~micheles/python/documentation.html HTH, Diez -- http://mail.python.org/mailman/listinfo/python-list