可以说我的班级有很多方法,我想在每个方法上应用我的装饰器,以后在我添加新方法时,我想应用相同的装饰器,但是我不想在所有方法声明上方写@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)
添加回答
举报
0/150
提交
取消