自动化-day8-Python基础(面向对象、日志、jsonpath操作)

1、面向对象

  a、基础定义

    类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

    类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

    数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。

    方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

    局部变量:定义在方法中的变量,只作用于当前实例的类。

      ※定义局部变量需使用两个连续的‘_’来声明变量,局部变量只允许在类中调用。

    实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

    继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

    实例化:创建一个类的实例,类的具体对象。

    方法:类中定义的函数。只有实例化之后才可以调用。

    私有方法:定义的函数只允许在类中使用,类外无法调用该函数

    def __close(self):
        self.cursor.close()
        self.conn.close()

      定义方法为使用两个连续的'_'作为开头来声明私有函数。

    对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

    构造函数:定义方法与函数一致,但函数名称需使用__init__来声明构造函数

    def __init__(self,name,sex):
        #构造函数,
        # print('self的内存地址,',id(self))
        self.name = name
        self.sex = sex
        self.__zl  = 200
        self.birthday = time.time()
        self.cry()

      1、类在实例化的时候,自动执行的函数

      2、如果要使用这个类,必须要传一些参数的时候参数写在构造函数里面,构造函数定义的参数为类的全局变量,在类中的所有实例都可以调用

    析构函数:当使用del销毁实例时自动执行的函数。

    def __close(self):
        self.cursor.close()
        self.conn.close()

      1、定义方法与函数一致,但函数名要求使用__del__来声明析构函数

    类方法:公共的方法

    @classmethod
    def putonghua(cls):
        print(cls.country)
        print('会说普通话')

      1、只能使用类变量,无法使用私有变量

      2、直接可以通过类名来调用

      3、不需要实例化,通过实例也可以调用

    实例变量、成员变量:self.xxxx※self为本类对象,使用self.可以调用本类中的变量、方法。

    属性方法:方法名可以当做变量名,属性方法用于对该变量的计算操作。

    @property
    def age(self):
        return int(time.time() - self.birthday)

      1、不能有参数,但必须有返回值

    静态方法:和一个普通方法没有任何区别,和类也没有什么关系,也无法调用类变量,只是定义在类里面而已

    @staticmethod
    def suanuga():
        print('suanuga')

  b、创建类

    class PersonManger: #经典类
        pass

    使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾

 

2、生成日志

  Python自带日志模块logging(不推荐),建议使用loguru

  a、日志级别:debug、info、warning、error

        logger.debug('开始连接mysql')
        logger.info('mysql配置xxxx')
        logger.warning('警告,磁盘空间即将不足')
        logger.error('程序出错了')

    debug级别为输出所有调试信息,级别最低

    info级别为输出正常提示信息

    warning级别为输出警告信息

    error级别为输出报错信息

    exception级别为程序异常信息,输出也是error级别

  b、设置日志级别

    loguru.logger.add(sys.stdout,level='WARNING')#打印warning以上级别的信息
    loguru.logger.add('wq.log',level='INFO',encoding='UTF-8')#打印INFO以上级别的信息,存入日志文件中

  c、设置日志格式

    fmt = '[{time}][{level}][{file.path}:line:{line}:function_name:{function}] ||msg={message}'
    logger.add(sys.stdout,level='INFO',format=fmt)#咱们本地运行的时候,在控制台打印
    logger.add('wxl.log',level='DEBUG',format=fmt,encoding='utf-8',enqueue=True,rotation='1 day',retention='10 days')#写在日志文件里面

    sys.stdout在本地运行时,用来调用本地显示模块。

    level用于设置日志级别,即显示该级别以上的信息。

    format用于设置日志显示格式。

    enqueue同步或异步写入日志,TRUE为异步写入,False为异步写入。在高并发时减少日志对程序产生影响。

    rotation为设置生成新日志文件时间,引号内可以设置文件大小、隔多长时间、每逢任意时间。

    retention为设置多长时间后自动清除日志。

 

3、jsonpath操作

  需安装jsonpath模块,该模块用于快速从复杂的json串中取出相应数据。

  准确查询

print(jsonpath.jsonpath(s,'$.max_count'))

 

  模糊查询

print(jsonpath.jsonpath(s,'$..level')) #使用$..来模糊查询对应字段

 

 

 

 

 

 

  

  

 

posted @ 2020-10-09 14:43  心淡灬人懒  阅读(128)  评论(0)    收藏  举报