如何获取原始函数的名称?
def wrap(f):
def wrapped_f(*args, **kwargs):
# do something
return wrapped_f
@wrap
def A(params):
# do something
print(A.__name__)
结果:wrapped_f,但我需要A!
Use functools.wraps() https://docs.python.org/2/library/functools.html#functools.wraps:
直接来自文档:
如果不使用这个装饰器工厂,示例函数的名称将是“wrapper”,并且原始 example() 的文档字符串将丢失。
Example:
from functools import wraps
def wrap(f):
@wraps(f)
def wrapped_f(*args, **kwargs):
pass
return wrapped_f
@wrap
def A(params):
pass
print(A.__name__)
Output:
$ python -i foo.py
A
>>>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)