python 装饰物_如何在python中做一个条件装饰器

装饰器只是返回替换,可选择相同功能,包装器或完全不同的东西的callables.因此,您可以创建条件装饰器:

def conditional_decorator(dec, condition):

def decorator(func):

if not condition:

# Return the function unchanged, not decorated.

return func

return dec(func)

return decorator

现在您可以像这样使用它:

@conditional_decorator(timeit, doing_performance_analysis)

def foo():

time.sleep(2)

装饰者也可以是一个类:

class conditional_decorator(object):

def __init__(self, dec, condition):

self.decorator = dec

self.condition = condition

def __call__(self, func):

if not self.condition:

# Return the function unchanged, not decorated.

return func

return self.decorator(func)

这里__call__方法与第一个示例中返回的decorator()嵌套函数扮演相同的角色,此处的封闭dec和条件参数作为参数存储在实例中,直到应用装饰器为止.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值