进行此 *** 作或对类定义进行其他修改的最简单方法是定义一个元类。
另外,只需在类定义的末尾应用装饰器即可:
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。
当然,在实践中,您将需要更选择性地应用装饰器。只要您要装饰除一种方法外的所有方法,您就会发现仅以传统方式使用装饰器语法会更轻松,更灵活。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)