参考:Python 函数装饰器
class AuthClass:
def __init__(self, name, pwd):
self.name = name
self.pwd = pwd
def auth(self):
if self.name == "python" and self.pwd == "123":
return True
else:
return False
def auth_before(f):
@wraps(f)
def inner(*args, **kwargs):
if not user.auth():
print("用户名或密码错误")
return False
else:
return f(*args, **kwargs)
return inner
@auth_before
def p1():
return "this is p1 function"
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
user = AuthClass("python", "123")
# result = auth_before(p1)
print(p1())
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
@wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等的功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性