python之类与对象(4)

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 = name
11         self.age = age
12 
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     pass
23 
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 = name
11         self.age = age
12 
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()

总结就是,子类可以调用父类的属性方法,也可以修改新增新的方法。

 

posted @ 2018-12-05 13:37  云烟三渺  阅读(185)  评论(0编辑  收藏  举报