说我有一个类如下的课程:
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()修饰?通过强制实现明确包含装饰,或通过自动装饰所有实现。
答案 0 :(得分:1)
没有。 ABCs只能指定存在某些属性,无论是方法还是属性。他们没有能力决定使用装饰器。
ABCs指定接口,而不是实现;装饰器是一个实现细节。