我想從裝飾器中獲取局部變量。一個例子:獲取函數的局部變量
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' 變量(其驗證()使用)。經過一個多小時的搜索後,我感覺很迷茫。這可能嗎?
編輯: 讓我多一點徹底形容我的問題:我能得到字符串「some_prvilege」 沒有執行some_function?例如:
a = getattr(module, 'somefunction')
print a.decorator_arguments
?感謝您幫助我!
幾個人都拿出了基本相同的答案,但有什麼不清楚的是你是否不需要裝飾包(用'decorator(validate)')。這是一個要求嗎? – snapshoe 2010-10-17 16:33:13
不,這不是要求。我的問題在這個線程中得到了回答(見下文)。謝謝你們/女孩! – Martijn 2010-10-17 17:10:47