美文网首页
python类中使用装饰器,数据类型检测

python类中使用装饰器,数据类型检测

作者: sixiyizai | 来源:发表于2019-01-06 02:37 被阅读0次
    # coding:utf-8
    import logging
    import time
    from functools import wraps
    
    logger = logging.getLogger(__name__)
    
    
    def roll_back(func):
        """类中使用的装饰器"""
    
        @wraps(func)  # 在使用装饰器过程中的文档字符串的处理
        def _inner(self, *args, **kwargs):  # 此处的 self 为类的实例化对象,可以创建多个实例化对象打印 id 查看
            try:
                st = time.time()
                f_res = func(self, *args, **kwargs)
                time.sleep(0.5)
                logger.warning("cost time : {}".format(time.time() - st))  # 模拟装饰器增加功能
                return f_res
            except Exception as e:
                logger.error(str(e))
                self.occur_err()  # 当出现异常的时候调用实例化对象绑定的方法
                return False
    
        return _inner
    
    
    class ClsDemo(object):
        def __init__(self):
            pass
    
        @roll_back
        def work(self, a: int, b: int) -> int:  # 数据类型的检测,在pycharm中会有类型检测提示
            """装饰器增加功能"""
            return a + b
    
        def occur_err(self):
            logger.error("程序运行异常")
    
    
    if __name__ == '__main__':
        cls_obj_1 = ClsDemo()
        cls_obj_2 = ClsDemo()
        res1 = cls_obj_1.work(2, b=3)
        print(45, res1)
    
        res2 = cls_obj_2.work('5', b=6)
        print(48, res2)
    

    相关文章

      网友评论

          本文标题:python类中使用装饰器,数据类型检测

          本文链接:https://www.haomeiwen.com/subject/wvujrqtx.html