类继承、组合

一、任务描述

  本实验任务主要对类继承进行一些基本操作,通过完成本实验任务,要求学生能熟练掌握类的继承与组合,并对类继承的基本操作进行整理并填写工作任务报告。

二、任务目标

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】查看该目录下的所有内容。

图1 切换目录

  【mkdir extends】在home目录下创建extends文件夹。

图2 创建文件夹

步骤2、继承

  【cd extends】切换到extends目录下,【vim class1.py】回车后创建并编辑名为class1的Python文件

图3 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,如下程序只作参考,不需要编写。

  可以看到teacher和student类中,有很多重复的代码。

  它们都有人类所共有的name,age,sex等特征,以及有人类有的walk这个技能,

  那么就可以把人类共有的name,age,sex特征和walk技能抽离出来,生成一个人的类,

  然后用老师和学生的类来继承人的类的这些特征和技能,这样可以避免写重复的代码。

图4 编辑Python文件

  编译如下程序。

  把老师和学生中所重复的代码抽离出来,生成人类。

图5 编辑Python文件

  定义一个老师类,来继承人的类的一个特征和技能。

  定义Teacher类时,只需要把额外的属性加上。如course.
一定要用 super(Teacher, self).__init__(name, age,sex)去初始化父类,否则,继承自 Person 的 Teacher 将没有 name、age和sex。

  函数super(Teacher, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。

图6 编辑Python文件

  定义一个学生类,来继承人的类的一些特征和技能:

图7 编辑Python文件

  类定义好了,通过类实例化生成一个学生和一个老师

图7 编辑python文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python class1.py】执行class1的Python文件。

  得到子类继承父类的属性及方法,None值的产生是tell函数执行的结果, 因为它没有return所以返回值是None。

图8 运行Python文件

步骤3、组合

  【vim class2.py】回车后创建并编辑名为class2的Python文件。

图9 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,编辑如下程序。

  一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用。

  组合,就是让不同的类混合并加入到其他类中,来增强功能和代码重用性。
定义日期的类。

图10 编辑Python文件

  定义学生类,实现学生的基本信息,通过【self.birth = Date(year,month,day)】来组合日期类信息。

图11 定义学生类

  实例化学生类,通过birth.tell_birth()调用日期的方法。

图12 实例化学生类

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python class2.py】执行class2的Python文件。

图13 运行Python文件
原文地址:https://www.cnblogs.com/yu-1104/p/9050503.html