【发布时间】:2010-10-17 12:31:05
【问题描述】:
我正在尝试从装饰器中获取局部变量。一个例子:
def needs_privilege(privilege, project=None):
"""Check whether the logged-in user is authorised based on the
given privilege
@type privilege: Privilege object, id, or str
@param privilege: The requested privilege"""
def validate(func, self, *args, **kwargs):
"""Validator of needs_privillige"""
try: check(self.user, privilege, project)
except AccessDenied:
return abort(status_code=401)
else:
return func(self, *args, **kwargs)
return decorator(validate)
装饰一个函数后,像这样:
@needs_privilege("some_privilege")
def some_function():
pass
我想从 some_function 中检索 'privilige' 变量(validate() 使用)。搜索了一个多小时后,我感到很失落。这可能吗?
编辑: 让我更彻底地描述一下我的问题:我可以得到字符串“some_prvilege” 执行 some_function 吗?比如:
a = getattr(module, 'somefunction')
print a.decorator_arguments
?感谢您到目前为止对我的帮助!
【问题讨论】:
-
几个人提出了基本相同的答案,但不清楚的是您是否需要装饰器包(
decorator(validate))。有这个要求吗? -
不,这不是必需的。我的问题在这个线程中得到了回答(见下文)。谢谢男孩/女孩!
标签: python unix decorator locals