请参见将装饰器附加到类中的所有函数上
进行此操作或对类定义进行其他修改的最简单方法是定义一个元类。
另外,只需在类定义的末尾应用装饰器即可:
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。
当然,在实践中,您将需要更选择性地应用装饰器。只要您要装饰除一种方法外的所有方法,您就会发现仅以传统方式使用装饰器语法会更轻松,更灵活。
但是,正如对该问题的公认答案所指出的那样,通常这不是一个好主意。



