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

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


慕娘9325324
浏览 416回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python