辉煌仪奇 2021-06-01 02:52 采纳率: 46.6%
浏览 51
已结题

python 带参数装饰器如何装饰类函数??

def chcke(maker=0)
    def check_login(func):
        @wraps(func)
        def jurisdiction(request, *args, **kwargs):
            if maker==0:
                pass
            else:
                pass
        return jurisdiction
    return check_login
        

我有上面一种装饰器,需要用它来装饰下面的类中的get函数,请问该如何实现

class login(View):
    def get(request,*args,**kwargs):
        pass
        return None
    def post(request,*args,**kwargs):
        pass
        return None
  • 写回答

2条回答 默认 最新

  • 辉煌仪奇 2021-06-01 08:14
    关注

    结题了,自己做出来了

    之前的装饰器少了个返回函数,添加了一个return func(self, request, *args, **kwargs)

    def require_role(role=None):
        def _deco(func):
            @wraps(func)
            def __deco(self, request, *args, **kwargs):
                super_number = request.super_number
                if super_number:
                    if role == super_number:
                        return func(self, request, *args, **kwargs)
                    else:
                        pass
                else:
                    pass
            return __deco
        return _deco

    函数调用:

    class login(View):
        @require_role((lambda:role.objects.get(role='login').role)())
        def get(request,*args,**kwargs):
            pass
            return None
        def post(request,*args,**kwargs):
            pass
            return None
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月6日

悬赏问题

  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
  • ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部