Python3有条件装饰吗? [英] Python3 decorating conditionally?
本文介绍了Python3有条件装饰吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以根据条件来装饰功能?
Is it possible to decorate a function based on a condition?
a'la:
if she.weight() == duck.weight():
@burn
def witch():
pass
我只是想知道是否可以使用逻辑(何时调用 witch
? )找出是否用 @burn
装饰女巫
?
I'm just wondering if logic could be used (when witch
is called?) to figure out whether or not to decorate witch
with @burn
?
如果没有,是否有可能在装饰器中创建一个达到相同效果的条件? (女巫
被称为未经装饰。)
If not, is it possible to create a condition within the decorator to the same effect? (witch
being called undecorated.)
推荐答案
您可以创建
>>> def conditionally(dec, cond):
def resdec(f):
if not cond:
return f
return dec(f)
return resdec
用法示例如下:
>>> def burn(f):
def blah(*args, **kwargs):
print 'hah'
return f(*args, **kwargs)
return blah
>>> @conditionally(burn, True)
def witch(): pass
>>> witch()
hah
>>> @conditionally(burn, False)
def witch(): pass
>>> witch()
这篇关于Python3有条件装饰吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文