python之类与对象(4)
5. 类的继承
继承可谓是重中之重,也是面向对象编程的核心内容之一。子类可以继承父类的属性以及方法。作为一名测试人员,学习了类之后,我们可以很好的把代码与数据分离开来,有了基本的封装思想。接下来我们将进一步学习类
5.1 类的继承简单用法
我们首先来看一下最传统的继承,直接继承父类的所有属性和方法,不用做任何改变。观看以下代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time :2018/12/4 16:03
# @Author :Yosef
# @Email :wurz529@foxmail.com
# @File: :SoftwareTestEngineer.py
# @Software :PyCharm Community Edition
class SoftwareTestEngineer:
def __init__(self,name,age):
self.name = name
self.age = age def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") def salary(self, salary):
print("薪资大概是%s" % salary) class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
# def auto_test(self):
# print("会自动化测试")
pass # logen = SoftwareTestEngineer("Logen","22")
# logen.basic_skill()
# logen.salary("6000-8000") ding = JuniorSoftwareTestEngineer("Ding","")
ding.basic_skill()
ding.salary("12000-15000")

我定义了一个SoftwareTestEngineer类,定义了一些属性和方法,然后用JuniorSoftwareTestEngineer继承父类SoftwareTestEngineer,然后什么都不给。然后去实例化子类对象,调用父类的方法属性,发现都是成功的。
这个就是最简单的继承方法,子类不需要做任何事情,就可以调用父类的所有属性方法。
5.2 类继承的重写与拓展
如果仅仅是继承父类,什么都不做,那将毫无意义。这里的重写以及拓展都是针对方法而言。
5.2.1 重写
重写就是针对父类的方法进行重写。有的方法我们继承过来之后,会不符合我们的需求,那我们就需要重写其中的方法。还是以刚刚的代码为例,我们做一下修改。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time :2018/12/4 16:03
# @Author :Yosef
# @Email :wurz529@foxmail.com
# @File: :SoftwareTestEngineer.py
# @Software :PyCharm Community Edition
class SoftwareTestEngineer:
def __init__(self,name,age):
self.name = name
self.age = age def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") def salary(self, salary):
print("薪资大概是%s" % salary) class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
# def auto_test(self):
# print("会自动化测试") def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。") # logen = SoftwareTestEngineer("Logen","22")
# logen.basic_skill()
# logen.salary("6000-8000") ding = JuniorSoftwareTestEngineer("Ding","")
ding.basic_skill()
ding.salary("12000-15000")
这里子类的basic_skill方法就是重写了父类的basic_skill方法,实例化子类之后,调用basic_skill也是调用新写的方法,没有重写的属性方法就依然继承父类。
5.2.2 拓展
重写只是针对父类继承过来的方法进行修改,但是实际上,任何类都会有自己的新特性,这是父类中所没有的新特性。简单来说,我们可以在新的类中定义新的方法。依然对上小节代码做出修改:
class SoftwareTestEngineer:
def __init__(self,name,age):
self.name = name
self.age = age def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") def salary(self, salary):
print("薪资大概是%s" % salary) class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
# def auto_test(self):
# print("会自动化测试") def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。") def code(self):
print(self.name+"也会写代码哦") # logen = SoftwareTestEngineer("Logen","22")
# logen.basic_skill()
# logen.salary("6000-8000") ding = JuniorSoftwareTestEngineer("Ding","")
ding.code()
总结就是,子类可以调用父类的属性方法,也可以修改新增新的方法。
python之类与对象(4)的更多相关文章
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
- python 引用和对象理解
今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...
- Python深入03 对象的属性
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python一切皆对象(object),每个对象都可能有多个属性(attribut ...
- Python的基础--对象 转
对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识 ...
- Python可迭代对象、迭代器和生成器
Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...
- Python的基础--对象
对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识符. ...
- Python一切皆对象
Python从设计之初就是一门面向对象的语言,它有一个重要的概念,即一切皆对象. Java虽然也是面向对象编程的语言,但是血统没有Python纯正.比如Java的八种基本数据类型之一int,在持久化的 ...
- python引用和对象详解
python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利用赋值语句,引用a指向了对象1. ...
- 举例子来说明Python引用和对象
今天看到这么一句奇怪的话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象分离 更 ...
- Python 获取类对象的父类
参考 Get parent class name? Python 获取类对象的父类 给定一个类的对象a,要求获取该对象的父类. 方法: a.__class__.__bases__ 返回由该对象的父类组 ...
随机推荐
- 三个参数,对mysql存储限制的影响
1.max_allowed_packet 这个参数会影响单此插入或读取的包的大小,一般和blob字段共用,但要注意一点是这个参数好像是分服务端与客户端的,如果想输出大字段的内容,则在用客户端链接服务 ...
- code1074 食物链
开3*n的并查集,其中x用来连接与x同类的,x+n用来连接x吃的,x+2*n用来连接x被吃的. 1 x y时,如果 x吃y 或 x被y吃,那么为假话, 否则x与y同类,x吃的y也吃,x被吃的y也被吃: ...
- 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂
在开发一个python项目是,需要用到mysql,但是, 安装完mysql-python后import加载模块提示以下错误: ImportError: libmysqlclient_r.so.16: ...
- [Training Video - 4] [Groovy] Optional parameter in groovy
Employee.log=log Employee e1 = new Employee() log.info e1.add(1,2,3,4) // optional parameters in gro ...
- HBase批量插入的简单代码
由于项目需要从HBase里读取数据,进行MapReduce之后输出到HDFS中. 为了测试方便,我这里写了一个批量插入HBase数据的测试代码.采用的Maven工程. 打算,今后的所有用到的小测试例子 ...
- vector的capacity增长方式
vector的capacity()调用返回vector中最大能够存储的元素个数,也即在下一次需要扩充容量之前能容纳的元素个数.reserve会使容器在必要的时候增长,以便容纳制指定数目的元素. #in ...
- iOS Programming Recipe 6: Creating a custom UIView using a Nib
iOS Programming Recipe 6: Creating a custom UIView using a Nib JANUARY 7, 2013 BY MIKETT 12 COMMENTS ...
- 10.13DOM中document--文档1找到元素的方法,还有元素内容属性
今天讲了js的组成部分中的第二组成部分(DOM),DOM包括以下内容: window -- 窗口 ...
- hive(在大数据集合上的类SQL查询和表)学习
1.jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&use ...
- python3操作Excel openpyxl模块的使用
python 与excel 安装模块 本例子中使用的模块为: openpyxl 版本为2.4.8 安装方法请参看以前发表的文章(Python 的pip模块安装方法) Python处理Excel表格 使 ...