python--类装饰器

在这里插入图片描述

使用类装饰器可以实现带参数装饰器的效果,但实现的更加优雅简洁,而且可以通过继承来灵活的扩展.

1、类装饰器

----------欢迎加入我的python新手交流群851211580------------
 1 class loging(object):
 2   def __init__(self,level="warn"):
 3     self.level = level
 4   def __call__(self,func):
 5     @functools.wraps(func)
 6     def _deco(*args, **kwargs):
 7       if self.level == "warn":
 8         self.notify(func)
 9       return func(*args, **kwargs)
10     return _deco
11   def notify(self,func):
12     # logit只打日志,不做别的
13     print "%s is running" % func.__name__
14 @loging(level="warn")#执行__call__方法
15 def bar(a,b):
16   print('i am bar:%s'%(a+b))
17 bar(1,3)

2、继承扩展类装饰器

 1 class email_loging(Loging):
 2   '''
 3   一个loging的实现版本,可以在函数调用时发送email给管理员
 4   '''
 5   def __init__(self, email='admin@myproject.com', *args, **kwargs):
 6     self.email = email
 7     super(email_loging, self).__init__(*args, **kwargs)
 8   def notify(self,func):
 9     # 发送一封email到self.email
10     print "%s is running" % func.__name__
11     print "sending email to %s" %self.email
12 @email_loging(level="warn")
13 def bar(a,b):
14   print('i am bar:%s'%(a+b))
15 bar(1,3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值