博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[python]-类的继承
阅读量:5293 次
发布时间:2019-06-14

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

一、继承的引入

 说到继承,你一定脑补出了一场偶像剧里富二代继承老爹遗产,从此甩开99%同龄人,走上人生巅峰的大戏。“类的继承”也和这个有点类似,“子类”继承了“父类”的“财产”。

类的继承很大程度也是为了避免重复性劳动。比如说当我们要写一个新的类,如果新的类有许多代码都和旧类相同,又有一部分不同的时候,就可以用“继承”的方式避免重复写代码。

让我们看一个案例:有两个类,它们有许多代码一模一样,也有一部分代码不同。

类一:

类二:

这两个类中,有三个类方法完全相同,但成绩单_新类多了一个类方法打印总分

继承的写法:

class 成绩单_旧():
def __init__(self,学生姓名,语文_成绩,数学_成绩):
self.学生姓名 = 学生姓名
self.语文_成绩 = 语文_成绩
self.数学_成绩 = 数学_成绩

def 打印成绩单(self):

print(self.学生姓名 + '的成绩单如下:')
print('语文成绩:'+ str(self.语文_成绩))
print('数学成绩:'+ str(self.数学_成绩))

def 打印平均分(self):

平均分 = (self.语文_成绩 + self.数学_成绩)/2
print(self.学生姓名 + '的平均分是:' + str(平均分))

class 成绩单_新(成绩单_旧):

 def 打印总分(self):
   总分 = self.语文_成绩 + self.数学_成绩
  print(self.学生姓名 + '的总分是:' + str(总分))

实例_旧 = 成绩单_旧('王明明',99,88)
实例_旧.打印成绩单()
实例_旧.打印平均分()

实例_新 = 成绩单_新('王明明',99,88)

实例_新.打印成绩单()
实例_新.打印平均分()
实例_新.打印总分()

二、继承类的相关定义

格式:  class 新类(旧类)

在Python里,我们统一把旧的类称为父类,新写的类称为子类子类可以在父类的基础上改造类方法,所以我们可以说子类继承了父类

三、继承例子

四、重写

子类除了可以定制新的类方法,还能直接覆盖父类的方法(可类比富二代男主推翻了老爹管理公司的做派),只要使用相同的类方法名称就能做到这一点。

例子:

子类中重写覆盖任意父类方法,哪怕是初始化函数init。我们再做个重写初始化函数init的练习:

像这样,子类从【一个父类】继承类方法,我们叫做“单继承”。还有一种更复杂的继承情况,叫“多重继承”。

五、多重继承

顾名思义,“多重继承”就是一个子类从【多个父类】中继承类方法。格式是class 子类(父类1,父类2,……)

在此,子类超级机器人同时继承了父类基础机器人高级机器人中的类方法。

不过,多重继承有利有弊。过度使用继承容易把事情搞复杂,就像一个人有很多爸爸必定会带来诸多麻烦。

如果不是开发大型项目,不太需要用到太复杂的继承关系,所以你只需有个印象就好,我们对继承的讲解就讲到这里。

 

转载于:https://www.cnblogs.com/mml-blog/p/10700516.html

你可能感兴趣的文章
解决flex4 分辨率自适应问题
查看>>
表扫描和索引扫描
查看>>
移动硬盘加密!让windows用户无法查看移动硬盘!
查看>>
部署Flask项目到腾讯云服务器CentOS7
查看>>
使用python实现京东抢购脚本
查看>>
登录之后更新导航
查看>>
saddle中每一个属性赋值给到WebPlate中的同名属性
查看>>
图论专题考试2 爆零祭
查看>>
21.centos7基础学习与积累-007-远程连接
查看>>
获取当前日期和随机数
查看>>
透视ERP会计科目 (转自SAP屠夫的博客)
查看>>
0049 MyBatis关联映射--一对一关系
查看>>
解决ultravnc在win2008 R2下CTRL+ALT+DELETEA组合键发送失败的问题
查看>>
Ceph相关
查看>>
大小写转换
查看>>
AJAX
查看>>
maven项目启动报错ContainerBase.addChild: start
查看>>
笔记2
查看>>
HCNP学习笔记之ICMP协议与ping原理以及用Python实现ping
查看>>
字符函数
查看>>