2024-05-12 21:03:36 发布
网友
我在每个函数上都有几个装饰器,有没有办法把它们组合成一个?在
@fun1 @fun2 @fun3 def do_stuf(): pass
更改为:
还可以编写一个支持decorator链接的泛型decorator:
def fun1(f): print "fun1" return f def fun2(f): print "fun2" return f def fun3(f): print "fun3" return f def chained(*dec_funs): def _inner_chain(f): for dec in reversed(dec_funs): f = dec(f) return f return _inner_chain @fun1 @fun2 @fun3 def do_stuff(): pass @chained(fun1, fun2, fun3) def do_stuff2(): pass all_funs = chained(fun1, fun2, fun3) @all_funs def do_stuff3(): pass
def all_funs(f): return fun1(fun2(fun3(f)))
原则上,修饰语只是语法上的甜点:
def do_stuf(): pass do_stuf = fun1(do_stuf)
所有的装饰者都应该这样做:
如果有装饰器的参数,事情会变得更复杂一点(但只有一点点)。在
还可以编写一个支持decorator链接的泛型decorator:
原则上,修饰语只是语法上的甜点:
所有的装饰者都应该这样做:
^{pr2}$如果有装饰器的参数,事情会变得更复杂一点(但只有一点点)。在
相关问题 更多 >
编程相关推荐