将abc.abstractmethod与其他装饰器

时间:2016-01-26 17:50:38

标签: python python-3.x decorator python-decorators

说我有一个类如下的课程:

from functools import wrap
import abc

class Test:
    def hello (self):
        print("hello world!")

    def decorator (f):
        @wraps(f)
        def wrapped (inst, *args, **kwargs):
            inst.hello()
            return f(inst, *args, **kwargs)
        return wrapped

    @abc.abstractmethod
    # @decorator ???
    def fn (self):
        return

有没有办法确保抽象方法fn()的所有实现都用decorator()修饰?通过强制实现明确包含装饰,或通过自动装饰所有实现。

1 个答案:

答案 0 :(得分:1)

没有。 ABCs只能指定存在某些属性,无论是方法还是属性。他们没有能力决定使用装饰器。

ABCs指定接口,而不是实现;装饰器是一个实现细节。