十年测试经验的阿里p10讲解【python高阶:面对象编程】 python全栈自动化测试系类4-3

诶,又是我你们最亲爱的凡哥又回来了,兄弟们想我了嘛,这几天凡哥也是爆肝中,每天仗着自己脖子往下都是肝,就一直在狂肝,各位小伙伴如果觉得凡哥讲的还可以呢,就来一波三连。欸在此谢过各位,昨天小伙伴的私信挺多的所以凡哥也是回到凌晨2点才回完各位的消息,所以说小伙伴私信只要发了凡哥是肯定会回复的不要着急哈。

接下来还是先来波自我介绍。

凡哥我已经有着十二年互联 自动化测试和测试开发工程师,拥有丰富的自动化测试平台及测试开发经验,擅长接口测试、Python自动化全栈,测试开发平台等,参与过亿级用户金融系统测试开发平台架构以及开发,曾主导过多家一线互联 公司自动化测试平台或自动化测试框架的搭建,参与项目涵盖金融、电商、教育等多个行业。好就介绍这么多,接下来就开始正题废话少说让我们开始把

后续:这一篇文章出完python入门到精通系列就出完了,接下来就是大家期盼的接口自动化测试项目实战篇,敬请期待吧,这里列了一个下一篇的讲解内容有感兴趣的小伙伴可以点个关注哦。

关于API接口

精通工具类的接口测试工具

pytest单元测试框架

requests功能模块详解

接口自动化测试框架项目实战

微服务架构的接口自动化测试

目录

废话不多少现在开始我们今天的主题

【第一节:面向对象之类,对象及__INIT__(),SELF相关用法讲解】

面向对象编程介绍

类和对象

对象

类和对象之间的关系

定义类

创建对象

__INIT__()方法

<1>使用方式

<2>__INIT__()方法的调用

SELF

结束:

【第二节:python面向对象编程2(内置属性、类属性、对象属性)】

一、内置属性

       1、__doc__

       2、__dict__

       3、python内置类属性

二、类属性和对象属性

       1、实例属性(对象属性)

        2、类属性

【第三节:Python面向对象编程:类对象-类属性-类方法-静态方法 】

一:类对象

【操作】

二:类属性

三:类方法

四:静态方法

【第四节:python:序列化与反序列化(json、pickle、shelve)】

一、前言

1. 现实需求

2.数据格式

3. 序列化/反序列化

4.相关模块

二、json模块

1. 序列化与反序列化

2. JSON与Python之间数据类型对应关系

3. 实例:内置数据类型序列化/反序列化

4. 实例:自定义数据类型的序列化/反序列化

三、pickle模块

1. pickle模块与json模块对比

2. pickle模块使用的数据流格式

3. pickle模块提供的相关函数

4. 实例:内置数据类型的序列化/反序列化

5. 实例:自定义数据类型的序列化/反序列化

四、shelve模块

实例:内置数据类型操作

实例:自定义数据类型操作

五、阶段总结

1. 对比

2. 建议

3. 附录

【第五节:python 反射机制在实际的应用场景讲解】

      剖析python语言中 “反射” 机制的本质和实际应用场景一. 前言

二、web实例

三、反射机制

四、进一步完善

五、动态导入模块

六、最后的思考

【第六节:Python函数装饰器原理与用法详解】

装饰器有2个特性,一是可以把被装饰的函数替换成其他函数, 二是可以在加载模块时候立即执行

通过args 和 *kwargs 传递被修饰函数中的参数

带参数的被装饰函数 

不定长

带参数的装饰器

叠放装饰器

类装饰器

标准库中有多种装饰器


【第一节:面向对象之类,对象及__INIT__(),SELF相关用法讲解】

面向对象编程介绍

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

面向对象目的:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 这里把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象

对象

某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。可以是直接使用的

类和对象之间的关系

                            

定义类

创建对象

方法

<1>使用方式

<2>方法的调用

SELF

  • 所谓的self,可以理解为自己
  • 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

结束:

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。

作为视频替代者,我认为各种视频虽然经过精简,但是还是冗余啰嗦。如果需要认真学习,对应视频讲解链接:

注:Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。
 

【第二节:python面向对象编程2(内置属性、类属性、对象属性)】

python面向对象编程

一、内置属性

       使用内置函数dir可以查看一个对象支持的所有属性和方法,Python中存在着很多的内置属性。

1

2

3

4

5

6

7

 

 

  

       1、__doc__

        文档说明,在类中定义的。也可以直接: 类名.__doc__

1

2

3

4

5

6

7

8

9

10

11

12

13

 

 

 

 

  

       2、__dict__

       把对象属性转换成字典

1

2

3

4

5

6

7

 

 

  

       3、python内置类属性

             __name__:内置属性,如果直接运行该模块,__name__=”__main__”;如果import一个模块,该模块的__name__=模块名

             if __name__==’__main__’ :判断是否直接运行的该模块

             __module__:类定义所在的模块(类的全名是‘__main__.className’,如果类位于一个导入mymod中,那么className.__module__等于mymode)

             __bases__:类的所有父类构成元素(包含一个所有父类组成的元组)

二、类属性和对象属性

       在面向对象开发中,使用类创建出来的实例是一个对象,类同样是一个对象。

       1、实例属性(对象属性)

       通过类创建的对象称为实例对象,对象属性又称为实例属性,记录对象各自的数据,不同对象的同名实例属性,记录的数据各自独立,互不干扰。在__init__方法里,以参数的形式定义。

1

2

3

4

5

6

7

8

9

10

11

 

 

 

  

        2、类属性

       在类对象里定义类属性。类属性可以通过类对象和实例对象获取。

       类属性只能通过类对象修改,不能通过实例对象修改。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

 

 

   

 

 

 

   

   

  

【第三节:Python面向对象编程:类对象-类属性-类方法-静态方法 】

一:类对象

  前面讲的类定义格式中,“class 类名:”。实际上,当解释器执行class 语句时, 就会创建一个类对象。

【操作】

运行结果:

  <class ‘type’>
  2220691901896
  <class ‘__main__.Student’>
  <__main__.Student object at 0x000002050D649208>
  <class ‘__main__.Student’>
  <__main__.Student object at 0x000002050D649160>

  注:我们可以看到实际上生成了一个变量名就是类名“Student”的对象。我们通过赋值给新变 量Stu2,也能实现相关的调用。说明,确实创建了“类对象”。

  【注】pass 为空语句。就是表示什么都不做,只作为一个占位符。当写代码时, 遇到暂时不知道方法或者类中加入什么时,可以先用 pass占位,后期再补上。

二:类属性

  类属性是从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以 被所有实例对象共享。

  类属性的定义方式:

    class 类名:

      类变量名= 初始值
  在类中或者类的外面,我们可以通过:“类名.类变量名”来读写。

【操作】 类属性的使用测试

#测试类属性

运行结果:

  公司是: **公司
  张三 的分数是: 80
  共创建了1个Student对象

  内存分析:实例对象和类对象创建过程(重要)

    

三:类方法

  类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod来定义,格式如下:

    @classmethod def

    类方法名(cls [,形参列表]) :

      函数体

  要点如下:

    1. @classmethod必须位于方法上面一行

    2. 第一个cls 必须有;cls指的就是“类对象”本身;

    3. 调用类方法格式:“类名.类方法名(参数列表)”。 参数列表中,不需要也不能给 cls 传 值。

    4. 类方法中访问实例属性和实例方法会导致错误

    5. 子类继承父类方法时,传入cls 是子类对象,而非父类对象

【操作】类方法使用测试

四:静态方法

  Python中允许定义与“类对象”无关的方法,称为“静态方法”。

  “静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空 间里面”,需要通过“类调用”。

  静态方法通过装饰器@staticmethod来定义,格式如下:

    @staticmethod def

    静态方法名([形参列表]) :

      函数体

  要点如下:

    1. @staticmethod必须位于方法上面一行

    2. 调用静态方法格式:“类名.静态方法名(参数列表)”。

    3. 静态方法中访问实例属性和实例方法会导致错误

【操作】静态方法使用测试

【第四节:python:序列化与反序列化(json、pickle、shelve)】

/p>

一、前言

1. 现实需求

每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Python也是一样。很多时候我们会有这样的需求:

  • 把内存中的各种数据类型的数据通过 络传送给其它机器或客户端;
  • 把内存中的各种数据类型的数据保存到本地磁盘持久化;

2.数据格式

如果要将一个系统内的数据通过 络传输给其它系统或客户端,我们通常都需要先把这些数据转化为字符串或字节串,而且需要规定一种统一的数据格式才能让数据接收端正确解析并理解这些数据的含义。XML 是早期被广泛使用的数据交换格式,在早期的系统集成论文中经常可以看到它的身影;如今大家使用更多的数据交换格式是JSON(JavaScript Object Notation),它是一种轻量级的数据交换格式。JSON相对于XML而言,更加加单、易于阅读和编写,同时也易于机器解析和生成。除此之外,我们也可以自定义内部使用的数据交换格式。

如果是想把数据持久化到本地磁盘,这部分数据通常只是供系统内部使用,因此数据转换协议以及转换后的数据格式也就不要求是标准、统一的,只要本系统内部能够正确识别即可。但是,系统内部的转换协议通常会随着编程语言版本的升级而发生变化(改进算法、提高效率),因此通常会涉及转换协议与编程语言的版本兼容问题,下面要介绍的pickle协议就是这样一个例子。

3. 序列化/反序列化

将对象转换为可通过 络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化。

4.相关模块

本节要介绍的就是Python内置的几个用于进行数据序列化的模块:

模块名称 描述 提供的api
json 用于实现Python数据类型与通用(json)字符串之间的转换 dumps()、dump()、loads()、load()
pickle 用于实现Python数据类型与Python特定二进制格式之间的转换 dumps()、dump()、loads()、load()
shelve 专门用于将Python数据类型的数据持久化到磁盘,shelve是一个类似dict的对象,操作十分便捷 open()

回到顶部

二、json模块


大部分编程语言都会提供处理json数据的接口,Python 2.6开始加入了json模块,且把它作为一个内置模块提供,无需下载即可使用。

1. 序列化与反序列化

Python的JSON模块 序列化与反序列化的过程分别叫做:encoding 和 decoding。

  • encoding: 把Python对象转换成JSON字符串
  • decoding: 把JSON字符串转换成python对象

json模块提供了以下两个方法来进行序列化和反序列化操作:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月19日
下一篇 2022年11月19日

相关推荐