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

2024-04-27 00:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能有一个类自动包装它的所有方法,而不必显式地修饰每个方法。你知道吗

例如,不要这样做:

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

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

我想这样做:

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

    def mymethod2(...):
        ...

这里我是在暗示元类,但我不确定这是正确的解决方法。 我刚刚发现了__prepare__协议。这将允许我做一些幼稚的事情,比如装饰类名称空间中的所有函数或所有可调用项,但这并不是我真正想要的。我只想修饰方法(类方法和实例方法)。你知道吗

Python有这么多元编程工具,如果没有一种方法。。。或者至少是一种比手工装饰每个方法更好的方法?你知道吗

我使用的是python3.6。你知道吗

谢谢!你知道吗


Tags: 方法名称协议defmyclass空间装饰prepare