包装函数的函数名称? [复制]

2024-04-08

如何获取原始函数的名称?

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(使用前将#替换为@)

包装函数的函数名称? [复制] 的相关文章

随机推荐