我对 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/