博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之类与对象(4)
阅读量:4696 次
发布时间:2019-06-09

本文共 3207 字,大约阅读时间需要 10 分钟。

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()

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

 

转载于:https://www.cnblogs.com/wlyhy/p/10070107.html

你可能感兴趣的文章
Contoso 大学 - 6 – 更新关联数据
查看>>
RESTful API 设计指南
查看>>
Windows 10正式版的历史版本
查看>>
hdu4057Rescue the Rabbit(ac自动机+dp)
查看>>
【Javascript】: for循环中定义的变量在for循环体外也有效
查看>>
C++中memcpy和memmove
查看>>
实验吧编程 -找素数
查看>>
Dasha and Photos CodeForces - 761F (前缀优化)
查看>>
GLPK下载安装
查看>>
const变量赋值报错分析
查看>>
去空格和空白文本
查看>>
css制作圣诞树
查看>>
字符串常量池
查看>>
红白球与小明
查看>>
查看sqlserver被锁的表以及如何解锁
查看>>
ViewPager 详解(一)---基本入门
查看>>
伪类和伪元素的区别
查看>>
poj2248——Addition Chains(迭代加深搜索)
查看>>
JS屏蔽右键菜单和禁止刷新F5
查看>>
在Linux上搭建Hadoop
查看>>