为了账号安全,请及时绑定邮箱和手机立即绑定

如何修饰一个类的所有功能而不用为每个方法一遍又一遍地键入它?

如何修饰一个类的所有功能而不用为每个方法一遍又一遍地键入它?

慕娘9325324 2019-12-25 14:49:58
可以说我的班级有很多方法,我想在每个方法上应用我的装饰器,以后在我添加新方法时,我想应用相同的装饰器,但是我不想在所有方法声明上方写@mydecorator时间?如果我调查__call__这是正确的方法?重要提示:以下示例似乎在解决与原始问题不同的问题。编辑:我想显示这种方式,这是我的问题的类似解决方案,任何人以后都可以使用注释中提到的mixin找到这个问题。class WrapinMixin(object):    def __call__(self, hey, you, *args):        print 'entering', hey, you, repr(args)        try:            ret = getattr(self, hey)(you, *args)            return ret        except:            ret = str(e)            raise        finally:            print 'leaving', hey, repr(ret)那你可以在另一个class Wrapmymethodsaround(WrapinMixin):     def __call__:         return super(Wrapmymethodsaround, self).__call__(hey, you, *args)
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 413 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信