def authApplyOperation(func):
"""
* 自动应用更改
:return:
"""
@functools.wraps(func)
def decorate(*args, **kwargs):
"""
* 应用更改装饰器
* 其中顶点操作的增加属性、修改属性、删除属性只要记录最终返回值即可
:return:
"""
# 省略逻辑代码
pass
return result
return decorate
def routeParam(req):
def routeDecorate(func):
@functools.wraps(func)
def decorate():
"""
* 异常包装装饰器
:return:
"""
result = None
return result
return decorate
return routeDecorate
@app.route("/hugeGraph/operationVertex", methods=["POST", "GET"])
@routeParam(request)
@authApplyOperation
def operationVertex(req):
retutn {}
上面是两个项目中用到的装饰器
注意事项一:如果项目中一个方法需要用到多个装饰器注意装饰器调用顺序,其中@authApplyOperation为优先调用,@routeParam(request)为第二调用
注意事项二:如果装饰器需要传参,那么装饰器必须多一层如routeParam装饰器方法,说白了装饰器就是套娃,间接的改变了函数执行顺序
注意事项三:如果项目中某方法被装饰器修饰后,而你这个方法需要被其他方法调用,那么有时候就需要屏蔽装饰器,这时就要用到__wrapped__方法
无装饰器正常调用
operationVertex()
有装饰器需要屏蔽装饰器调用
operationVertex.__wrapped__()