【发布时间】:2016-09-05 01:36:58
【问题描述】:
所以我有这组代码,测试装饰器base_permissions_check:
def authenticated(self,*arg,**kwargs):
function_call = inspect.stack()[1][4][0].strip()
matched = re.match('^self\.', function_call)
if not matched:
raise Exception("function is private")
return self.user.is_authenticated()
def base_permissions_check(func):
def wrap(self,**kwargs):
if not self.authenticated(kwargs):
return self.permissions
# func(kwargs)
return func(kwargs)
return wrap
#public
@base_permissions_check
def has_video_permission(self,**kwargs):
当我调用 has_video_permission 时,错误提示 authenticated() takes 1 positional argument but 2 were given。我真的不知道怎么了?而我只传了一个 kwarg 进去
【问题讨论】:
-
第一个参数是
self。kwargs是第二个。 -
但经过身份验证接受 self 和 **kwargs,怎么了?
-
您可能正在寻找argument unpacking。
-
还是同样的错误
-
请将错误的完整回溯添加到您的问题中,这样我们就不必一直猜测这里到底抱怨了什么。
标签: python class decorator python-decorators