class Account:
def __init__(self, **kwargs):
[...]
self._is_valid = True
def valid_before_logout(self, func):
def execute(*args, **kwargs):
if self._is_valid:
return func(*args, **kwargs)
else:
raise AccountOperatingError('the account is already invalidated or signed out')
return execute
@valid_before_logout
def refresh(self):
[...]
@valid_before_logout
def invalidate(self):
self._is_valid = False
[...]
@valid_before_logout
def signout(self):
self._is_valid = False
[...]
类Account里面有一个方法valid_before_logout用作装饰器,作用是在执行任何类方法之前检查self._is_valid,如果为False就抛出异常。
不过在导入这个模块的时候出错:
>>> import account
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "account.py", line 1, in <module>
class Account:
File "account.py", line 15, in <module>
def refresh(self):
TypeError: valid_before_logout() missing 1 required positional argument: 'func'
>>>
请问这是什么原因?