Python - 一个函数可以看到它自己的装饰器吗

标签 python decorator python-decorators

我对 Python 还是很陌生。给定一个具有装饰器的函数,该函数是否可以访问它们的主体?

(来自 Fabric 脚本)

@task
@roles('qa-env')
def deploy_qa():
    #-----------------------------------------------------------------------
    # Is there a way to get access to the @roles decorator as an array here?
    #-----------------------------------------------------------------------
    deployer.configureEnv('qa-env')
    deployer.installApp1()
    deployer.installApp2(True)

最佳答案

不,该函数不知道它从哪里被调用或者谁持有它的引用。

充其量您可以访问父调用框架(使用 sys._getframe(1)),但这不一定是装饰器。

一般来说,如果您的函数需要从调用框架访问一个值,最好直接将它传递进去。例如,让 roles 装饰器使用一个额外的参数调用包装函数。

关于Python - 一个函数可以看到它自己的装饰器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104023/

相关文章:

java - 用图像和提示装饰 JTextField

python - 装饰类方法以构建方法注册表

python - 派生类的类/元类方法装饰器

python - 使用 python pandas 对值的数量进行运算

python Pandas : Find percentage by dividing 2 arrays

python - 我无法使用 pip 在 Windows 7 上安装 python 模块 cv2

python - 如何在谓词第一个为 False 的地方将列表一分为二

java - 装饰器模式丢失了虚方法查找。有什么好的选择或解决方法吗?

python - 装饰器作为类

python - 在Python中,如何获取带有参数传递给装饰器的函数名称?