一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“面向对象如何快速实现”。
一、如何创建一个类
class是关键字,表示类
类创建的语法:
class 类名称:
…… 变量 ……
…… 方法 ……
示例:
ch08-demo01-class.py
特别说明:Python类中定义的函数称为方法
二、如何创建一个对象(实例)
创建对象的过程也称之为:类实例化过程。
代码
ch09-demo01-class.py
三、类的方法
Python3面向对象的概念中,关于类的方法一共有四种:
① 实例方法 ( instanceMethod )- 使用频次最多
② 类方法(classMethod)- 根据需求适度
③ 静态方法(staticMethod)- 根据需求适度
④ 普通方法(ordinaryMethod)- 使用频次很少
四种方法的区别:
① 定义语法格式上;
② 对各种类型变量的访问权限上。
(一)实例方法instanceMethod
实例方法是属于实例对象的,但也可以使用类直接调用。但两者调用的方式有区别(传递参数个数上面)。
实例方法在定义中,第一个参数必须为 self (当然参数名称也可以随意定义,但是 self 是python默认的规定最好不修改)
实例方法定义的语法规范:
def 方法名称 (self [, arg1[, arg2, …[, argN]]]) :
▲ 实例方法的定义及各种调用
第一个参数 self 代表 调用该方法的实例对象,在使用实例对象调用方法的时候 可以忽略第一个参数,只需传递满足实例方法定义时的 n-1 个后续参数数量即可。
而类调用时,需要传递与定义数量匹配的n个参数,第一个 self 只当做一个参数变量名称而已。
示例:
ch08-demo02-instancemethod.py
△ 特殊的类实例方法——构造方法_init_
构造方法是类成员方法中特殊的一种方法,其方法名称为__init__( )。
该方法无需对象通过访问操作符调用,在类实例化对象的过程中自动调用。
构造方法的作用有两个:
① 为对象创建内存空间
② 实例对象的实例变量参数初始化
语法:
class 类名称:
# 类的构造方法
def __init__(self,参数列表 ):
……方法体……
示例:
ch08-demo03-constructor.py
△特殊的类实例方法2——实例对象输出_ str_
当我们使用 print() 函数输出使用类创建好的实例对象的时候,默认输出的是当前实例对象的十六进制内存地址。
示例:
ch08-demo04-tostring.py
改造,重新定义对象实例的输出。在类中定义 __str__方法
▲ 实例变量(成员属性)
与实例方法 遥相呼应 的是 实例变量。
实例变量 属于类创建的实例对象的,这些属性是所有实例对象都拥有的。只不过
每个实例对象的属性值各异。
实例变量 均在构造方法__init__( )中 声明并初始化。
语法:
self.实例变量名称 = 值 # self 代表当前创建的实例对象
类中的实例方法均可以访问实例变量。
示例1 :实例变量的创建及初始化
一般在创建构造方法的时候,充分利用构造方法为类实例变量(成员属性)初始化的这一典型作用。
示例:
ch08-demo5-instancevar.py
self 是对类创建对象的引用,代表当前对象。
当执行 obj1 = Person (‘路人甲’, 16) 时,self 等于 obj1
当执行 obj2 = Person (‘路人乙’, 22) 时,self 等于 obj2
示例2 :实例变量的两种输出方式
我们可以通过实例对象或定义类实例方法两种方式实现对初始化好的对象实例变量进行输出。
示例 2-1:通过 实例对象 实现对类创建的对象实例变量进行输出
示例 2-2:通过 定义实例方法 实现对实例变量进行输出
ch09-demo7-instancevar-output02.py
输出第2个对象实例变量
输出第1个对象实例变量
由于类中所有的实例方法均可以访问类的实例变量,则自定义实例方法进行输出。
说到这里我们有个疑问?
Q:使用函数式编程和面向对象编程方式来执行一个“方法”时,函数要比面向对象简便?
面向对象:【创建对象】->【通过对象执行方法】
函数编程:【执行函数】
观察上述对比答案则是肯定的,然后并非绝对,场景的不同适合其的编程方式也不同。
总结:函数式的应用场景 –> 各个函数之间是独立且无共用的数据