@decorator_a
def func_a():
pass
@decorator_b(arg)
@decorator_a
def func_b():
pass
如上所示,若我已知:
func = func_a
deco = decorator_a
请问:
- 我如何获得func上装饰器的元信息?
如:
meta = get_func_decorator(func)
print(meta.__name__)
------
decorator_a
- 我如何获得deco装饰过的函数信息?
如:
meta = get_deco_functions(deco)
print([x.__name__ for x in meta])
---------
[func_a, func_b]
谢谢大佬指教!
估计没有一般性的方法,因为有些库可以帮助隐藏已修饰函数的事实。这里有一些非通用的做法,可以参考:
添加实际的内省方法来做到这一点,
要检查的代码:
现在,可以使用以下内容检查上述
Foo
类...应该会打印出: