我想知道是否有可能有一个自动包装其所有方法的类,而不需要明确地装饰每个方法。
例如,而不是这样做:
class MyClass:
@mydecorator
def mymethod1(...):
...
@mydecorator
def mymethod2(...):
...
我想做这样的事情:
class MyClass(metaclass=DecoratedMethods):
def mymethod1(...):
...
def mymethod2(...):
...
这里我暗示了元类,但我不确定它是正确的解决方案路径。
我刚刚发现了__prepare__
协议。这将允许我做一些天真的事情,如装饰类命名空间中的所有函数或所有可调用对象,但这不是我想要的。我只想装饰方法(类方法和实例方法)。
Python有很多元编程设施,如果没有办法,我会感到惊讶......或者至少比手动装饰每个方法更好的方式?
我正在使用python 3.6。
谢谢!