Python中方法的自动/透明装饰

时间:2017-08-25 05:17:23

标签: python python-3.x metaprogramming python-3.6 python-decorators

我想知道是否有可能有一个自动包装其所有方法的类,而不需要明确地装饰每个方法。

例如,而不是这样做:

class MyClass:
    @mydecorator
    def mymethod1(...):
        ...

    @mydecorator
    def mymethod2(...):
        ...

我想做这样的事情:

class MyClass(metaclass=DecoratedMethods):
    def mymethod1(...):
        ...

    def mymethod2(...):
        ...

这里我暗示了元类,但我不确定它是正确的解决方案路径。 我刚刚发现了__prepare__协议。这将允许我做一些天真的事情,如装饰类命名空间中的所有函数或所有可调用对象,但这不是我想要的。我只想装饰方法(类方法和实例方法)。

Python有很多元编程设施,如果没有办法,我会感到惊讶......或者至少比手动装饰每个方法更好的方式?

我正在使用python 3.6。

谢谢!

0 个答案:

没有答案