说,我有类似的东西:
@decorator1
@decorator2
def myfunc()
# ....
如何声明一个新的装饰器both_decorators
,它将按顺序调用decorator1
和decorator2
,基本上将它作为别名?所以我可以写一下:
@both_decorators
def myfunc()
# ....
在许多情况下,当多个装饰器以相同的方式使用时,我们的想法是保存输入。
答案 0 :(得分:5)
简单:
def both_decorators(func):
return decorator1(decorator2(func))
因为那是所有装饰者的确如此。
答案 1 :(得分:1)
是的,你可以。有点像:
def both_decorators(*decs):
def decorator(dc):
for dec in reversed(decs):
dc = dec(dc)
return dc
return decorator
然后您需要做的就是添加它们
@both_decorators(decorator1, decorator2)
def myfunc():
#something happening here.
我个人更喜欢这个,因为你可以选择你想要的装饰器,而不是。