我试图在abstractmethod上添加decorator,这样当在子类中调用该方法时,也会调用decorator函数。这是针对一个框架的,所以我试图限制以后用户必须编写的额外代码的数量。decorator非常特定于框架,不适合框架的一般用户使用-希望这是有意义的
我知道还有其他一些方法可以做到这一点,但大多数方法都涉及到用户在创建自己的子类时复制一些样板代码。装饰师有助于避免复制样板文件
from abc import abstractmethod, ABC
def prepost(fn):
# The new function the decorator returns
def wrapper(*args, **kwargs):
print("In wrap 1")
fn(*args, **kwargs)
print("In wrap 2")
return
wrapper.__isabstractmethod__ = True
return wrapper
class Base(ABC):
pass
class Foo(Base):
@prepost
@abstractmethod
def dosomething(self):
raise NotImplementedError
class Bar(Foo):
def dosomething(self):
print("I'm doing something")
Test = Bar()
Test.dosomething()
当我尝试这个时,我得到: 我在做点什么
而不是装饰器的额外输出
目前没有回答
相关问题 更多 >
编程相关推荐