python用类写装饰器

代码示例
# -*- coding:utf-8 -*-
from functools import wraps
from datetime import datetime

#类的装饰器写法,日志
class log(object):
    def __init__(self, logfile='c:\out.log'):
        self.logfile = logfile

    def __call__(self, func):
        @wraps(func)
        def wrapped_func(*args, **kwargs):                     
            self.writeLog(*args, **kwargs)    # 先调用 写入日志         
            return func(*args, **kwargs)     # 正式调用主要处理函数       
        return wrapped_func

   #写入日志    
    def writeLog(self, *args, **kwargs):
        time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        log_str = time+' 操作人:{0[0]} 进行了【{0[1]}】操作'.format(args)           
        with open(self.logfile, 'a',encoding='utf8') as file:
            file.write(log_str + '\n')

@log()
def myfunc(name,age):
    print('姓名:{0},年龄:{1}'.format(name,age))

if __name__ == '__main__':
    myfunc('小白', '查询')
    myfunc('root', '添加人员')
    myfunc('小小', '修改数据')

日志己保存于指定位置,打开内容如下:
log.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,726评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,975评论 6 342
  • 我的乖乖我的娘, 重庆小伙真叫棒! 改革致富创新路, 煎锅摆在街道旁。 不用煤电不用火, “火炉”优势俺用上。 出...
    一叶知秋99阅读 379评论 3 4
  • 烛火秋千白雪绒 炙阳尘土夜街空 万般才华皆散尽 落入凡间叹梧桐 大学时自己写的诗
    王峰_2fce阅读 82评论 0 0