Python接口自动化测试框架(进阶篇)–类和对象(一)

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」。

前言

终于要进阶了,同学们一路从python的基础语法到数据类型、运算符、流程控制、条件控制、文件和异常处理、最后到函数编程,去实现一个小功能的python脚本应该已经不在话下,不过咱最终的目标是要走向自动化测试或编程的道路,脚本已经不能满足咱的需求,咱们写的每一个方法、每一个步骤,都需要禁得起推敲,就是最大可能的被复用,代码的灵活性和复用性必不可少;编码的道路也是重复造轮子的过程,那么自己的轮子造一次就好了。

image.png

面向对象

面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

----摘自百度百科

面向对象技术的基本特征

  • 类:由class关键字定义,用来描述一类事务具有相同的属性和方法的集合,定义该集合中每个对象所有的属性和方法,对象就是类的实例
    • 举例:一个Cat猫的类,属性是有毛、胡须、爪子;方法是会睡懒觉、抓老鼠、嬉戏等共有方法,那么创建该类的实例,如有cat1\cat2...他们都能调用共有的属性和方法
  • 方法:有关键字def定义的函数,不过在类里面它有3个不同的表现形式,下篇再讲
  • 类变量:它在类中定义且在函数体外,在类的实例化中是公用的,多是定义常量
  • 实例变量:在类中声明,属性是由变量来表示,由self修饰的变量,那它就叫实例变量
  • 继承:python的继承在class定义时,在类的括号中表示,被继承者这是当前类的基类,那么当前类又称之为基类的派生类(子类)
  • 方法重写:用于继承父类,且父类方法又不满足当前类的功能,然后对其修改,过程是对原来方法的覆盖,也叫方法重写
  • 实例化:创建类的实例,类的具体对象
  • 对象:通过类定义的数据结构实例;实际就是类实例化后的变量

类和类的对象

类的创建

  • 下面是定义了一个类名叫MyClass的空类,什么属性、方法都没有;也就是什么也不干
class MyClass:
    pass
复制代码
  • 如果MyClass类中有定义了属性和方法,那么再创建类的实例化,就可以调用它了,其实也可以通过类直接调用:obj.property
class MyClass:
    a = 1
    def func(self):
        return "hello world"
复制代码

类对象

类对象支持两种操作:属性引用和实例化

  • self代表的是类的实例,代表当前对象的地址;对象是则是类本身
# 类以上面定义的类为例

# 实例化类,那么c就是类的具体对象
c = MyClass()

# 属性的调用:
print(MyClass.a) # 类调用属性
print(c.a)  # 对象调用属性
print(c.func()) # 对象调用方法,和MyClass.func()效果是一样,但是一般不这样使用
复制代码
  • 在实例化类时,会自动调用类的构造方法__init__(self);实际self不是python关键字,它可以使用其他名字代替,这只是默认写法表示类本身而已
class MyClass:
    a = 1
    
    def __init__(self):
        print(self)
        print(self.__class__)
        
    def func(self):
        return "hello world"
        
# 创建类对象
c = MyClass()
# 在创建时就会自动调用__init__(self)构造函数;可以看到输出结果:
# <__main__.A object at 0x000001DEC15EF108>  表示self的实例的地址
# <class '__main__.A'> # 这才是对象类本身
复制代码