繁体   English   中英

使单个装饰器成为多个装饰器

[英]Making a single decorator of out multiple

说,我有这样的事情:

@decorator1
@decorator2
def myfunc()
   # ....

我如何声明一个新的装饰器both_decorators ,它将按顺序调用decorator1decorator2 ,实际上使其成为它们的别名? 这样我可以写:

@both_decorators
def myfunc()
   # ....

这个想法是在许多情况下以相同的方式使用多个装饰器时可以节省类型。

简单:

def both_decorators(func):
    return decorator1(decorator2(func))

因为这实际上是所有装饰者所做的。

是的你可以。 类似于以下内容:

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.

我个人比较喜欢这种方式,因为您可以选择所需的装饰器,而不需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM