有什么方法可以获取应用于函数的装饰器列表,而无需诉诸诸如装饰装饰器之类的骇人听闻的事情?
最佳答案
不是真的。首先,因为不是所有的装饰器都返回一个包装函数;装饰器可以简单地修改现有函数(也许在其上设置一个属性)——显然,Python 不会记录哪个函数触及了每个属性。其次,虽然您可能会向垃圾收集器请求包含对装饰函数的引用的闭包,以及包含该闭包的函数的闭包,但并非每个在闭包中包含对另一个函数的引用的函数都是装饰器应用的包装器。然后是带有参数的装饰器问题;在你到达实际的装饰功能之前,还有一层额外的内部功能。最后,并非所有装饰器都是函数,并非所有装饰对象都是函数。
简而言之,有时您可能能够对其进行近似,但即使它有效,它也将是一个仅适用于 CPython 的巨大 hack。只是没有任何简单的、有记录的方法可以做到这一点。
关于python - 我可以获得应用于函数的装饰器列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493514/