我正在尝试修饰一个函数,但我希望函数的修饰版本看起来像原始函数。琐碎的例子:
def decorator(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
wrapper.__name__ = func.__name__
wrapper.__str__ = lambda x: str(func)
wrapper.__repr__ = lambda x: repr(func)
return wrapper
但是当我做str(wrapped_function)
之类的事情时,我会得到像<function decorator.<locals>.wrapper at 0x10323e048>
这样无法提供信息的内容。
如何对其进行编辑,以便返回正确的repr
和str
?
不是this question的副本(虽然解决方案是相同的),但问题是有用的和不同的。