将装饰器附加到类中的所有函数上

我实际上并不需要这样做,只是想知道,有没有一种方法可以将装饰器一般地绑定到类中的所有函数,而不是为每个函数显式说明。

我想它然后变成一种方面,而不是装饰者,它的确有些奇怪,但是在考虑诸如计时或验证之类的事情时,它会很整洁。


jeck猫
浏览 553回答 3
3回答

倚天杖

进行此操作或对类定义进行其他修改的最简单方法是定义一个元类。另外,只需在类定义的末尾应用装饰器即可:class Something:   def foo(self): passfor name, fn in inspect.getmembers(Something):    if isinstance(fn, types.UnboundMethodType):        setattr(Something, name, decorator(fn))对于Python 3,将types.UnboundMethodType替换为types.FunctionType。当然,在实践中,您将希望有选择地应用装饰器,并且一旦您要装饰除一种方法外的所有装饰,您就会发现仅以传统方式使用装饰器语法会更轻松,更灵活。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python