我正在用a_decorator装饰一个函数decorator
@a_decorator(params)
def foo(x):
# print('Called',decorator_name)
# other magic是否有一种方法可以访问foo中的名称foo,以便我可以打印
“a_decorator”
def a_decorator(some_function):
def wrapper():
some_function()
return some_val
return wrapper发布于 2018-03-08 00:14:19
它可以通过将装饰器名称附加到包装函数来完成:
from functools import wraps
def a_decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
val = fn(*args, **kwargs)
# some action
return val
wrapper.decorated_by = a_decorator
return wrapper
@a_decorator
def foo(x):
print(x, foo.decorated_by.__name__)
foo('test') # prints: test a_decoratorpython中的函数是第一类,您可以将它们作为对象来处理,附加属性等等。
https://stackoverflow.com/questions/49138409
复制相似问题