5. 类的继承
继承可谓是重中之重,也是面向对象编程的核心内容之一。子类可以继承父类的属性以及方法。作为一名测试人员,学习了类之后,我们可以很好的把代码与数据分离开来,有了基本的封装思想。接下来我们将进一步学习类
5.1 类的继承简单用法
我们首先来看一下最传统的继承,直接继承父类的所有属性和方法,不用做任何改变。观看以下代码
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/12/4 16:03 4 # @Author :Yosef 5 # @Email :wurz529@foxmail.com 6 # @File: :SoftwareTestEngineer.py 7 # @Software :PyCharm Community Edition 8 class SoftwareTestEngineer: 9 def __init__(self,name,age):10 self.name = name11 self.age = age12 13 def basic_skill(self):14 print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。")15 16 def salary(self, salary):17 print("薪资大概是%s" % salary)18 19 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):20 # def auto_test(self):21 # print("会自动化测试")22 pass23 24 # logen = SoftwareTestEngineer("Logen","22")25 # logen.basic_skill()26 # logen.salary("6000-8000")27 28 ding = JuniorSoftwareTestEngineer("Ding","25")29 ding.basic_skill()30 ding.salary("12000-15000")
我定义了一个SoftwareTestEngineer类,定义了一些属性和方法,然后用JuniorSoftwareTestEngineer继承父类SoftwareTestEngineer,然后什么都不给。然后去实例化子类对象,调用父类的方法属性,发现都是成功的。
这个就是最简单的继承方法,子类不需要做任何事情,就可以调用父类的所有属性方法。
5.2 类继承的重写与拓展
如果仅仅是继承父类,什么都不做,那将毫无意义。这里的重写以及拓展都是针对方法而言。
5.2.1 重写
重写就是针对父类的方法进行重写。有的方法我们继承过来之后,会不符合我们的需求,那我们就需要重写其中的方法。还是以刚刚的代码为例,我们做一下修改。
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/12/4 16:03 4 # @Author :Yosef 5 # @Email :wurz529@foxmail.com 6 # @File: :SoftwareTestEngineer.py 7 # @Software :PyCharm Community Edition 8 class SoftwareTestEngineer: 9 def __init__(self,name,age):10 self.name = name11 self.age = age12 13 def basic_skill(self):14 print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。")15 16 def salary(self, salary):17 print("薪资大概是%s" % salary)18 19 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):20 # def auto_test(self):21 # print("会自动化测试")22 23 def basic_skill(self):24 print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。")25 26 # logen = SoftwareTestEngineer("Logen","22")27 # logen.basic_skill()28 # logen.salary("6000-8000")29 30 ding = JuniorSoftwareTestEngineer("Ding","25")31 ding.basic_skill()32 ding.salary("12000-15000")
这里子类的basic_skill方法就是重写了父类的basic_skill方法,实例化子类之后,调用basic_skill也是调用新写的方法,没有重写的属性方法就依然继承父类。
5.2.2 拓展
重写只是针对父类继承过来的方法进行修改,但是实际上,任何类都会有自己的新特性,这是父类中所没有的新特性。简单来说,我们可以在新的类中定义新的方法。依然对上小节代码做出修改:
1 class SoftwareTestEngineer: 2 def __init__(self,name,age): 3 self.name = name 4 self.age = age 5 6 def basic_skill(self): 7 print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") 8 9 def salary(self, salary):10 print("薪资大概是%s" % salary)11 12 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):13 # def auto_test(self):14 # print("会自动化测试")15 16 def basic_skill(self):17 print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。")18 19 def code(self):20 print(self.name+"也会写代码哦")21 22 # logen = SoftwareTestEngineer("Logen","22")23 # logen.basic_skill()24 # logen.salary("6000-8000")25 26 ding = JuniorSoftwareTestEngineer("Ding","25")27 ding.code()
总结就是,子类可以调用父类的属性方法,也可以修改新增新的方法。