[英]How to get the original name of a function after it is wrapped by function decorator?
def blahblah(func):
def wrapper(*args):
pass # blah blah blah....
return wrapper
@blahblah
def func1(arg1):
pass # blah blah blah
@blahblah
def func2(arg1):
pass # blah blah blah
functions = [func1, func2]
for func in functions:
print(func.__name__, func(0))
我想要的是获取此代码的原始名称,例如“ func1”和“ func2”。 但是之前编写的代码给了我“包装器”和“包装器”。 有什么办法吗? 最好不要更改包装代码。
wrapper None
wrapper None
func1 None
func2 None
您可以按如下方式使用functools.wraps
帮助程序函数,该函数将保留包装函数的原始名称和文档字符串,例如:
from functools import wraps
def blahblah(func):
@wraps(func)
def wrapper(*args):
pass # blah blah blah....
return wrapper
@blahblah
def func1(arg1):
pass # blah blah blah
print(func1.__name__)
# func1
由于小次郎在评论中指出,虽然这保留的名称和文档字符串,有一些事情要注意的- https://hynek.me/articles/decorators/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.