类继承、组合
一、任务描述
本实验任务主要对类继承进行一些基本操作,通过完成本实验任务,要求学生能熟练掌握类的继承与组合,并对类继承的基本操作进行整理并填写工作任务报告。
二、任务目标
1、掌握Python的类继承
三、任务环境
Ubuntu16.04、Python2.7
四、任务分析
在python3中所有类默认继承object,凡是继承了object的类都成为新式类,以及该子类的子类,Python3中所有的类都是新式类,没有集成object类的子类成为经典类(在Python2中没有集成object的类以及它的子类都是经典类)。
♥ 温馨提示 |
继承:即一个派生类(derived class)继承基类(base class)的字段和方法 |
五、任务实施
步骤1、环境准备
右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。
通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。
【mkdir extends】在home目录下创建extends文件夹。
步骤2、继承
【cd extends】切换到extends目录下,【vim class1.py】回车后创建并编辑名为class1的Python文件
回车后进入编辑框内,按键盘【i】进入编辑状态,如下程序只作参考,不需要编写。
可以看到teacher和student类中,有很多重复的代码。
它们都有人类所共有的name,age,sex等特征,以及有人类有的walk这个技能,
那么就可以把人类共有的name,age,sex特征和walk技能抽离出来,生成一个人的类,
然后用老师和学生的类来继承人的类的这些特征和技能,这样可以避免写重复的代码。
编译如下程序。
把老师和学生中所重复的代码抽离出来,生成人类。
定义一个老师类,来继承人的类的一个特征和技能。
定义Teacher类时,只需要把额外的属性加上。如course.
一定要用 super(Teacher, self).__init__(name, age,sex)
去初始化父类,否则,继承自 Person 的 Teacher 将没有 name、age和sex。
函数super(Teacher, self)将返回当前类继承的父类,即 Person ,然后调用__init__()
方法,注意self参数已在super()中传入,在__init__()
中将隐式传递,不需要写出(也不能写)。
定义一个学生类,来继承人的类的一些特征和技能:
类定义好了,通过类实例化生成一个学生和一个老师
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python class1.py】执行class1的Python文件。
得到子类继承父类的属性及方法,None值的产生是tell函数执行的结果, 因为它没有return所以返回值是None。
步骤3、组合
【vim class2.py】回车后创建并编辑名为class2的Python文件。
回车后进入编辑框内,按键盘【i】进入编辑状态,编辑如下程序。
一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用。
组合,就是让不同的类混合并加入到其他类中,来增强功能和代码重用性。
定义日期的类。
定义学生类,实现学生的基本信息,通过【self.birth = Date(year,month,day)】来组合日期类信息。
实例化学生类,通过birth.tell_birth()调用日期的方法。
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python class2.py】执行class2的Python文件。