一、继承的引入
说到继承,你一定脑补出了一场偶像剧里富二代继承老爹遗产,从此甩开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,……)
。
在此,子类超级机器人
同时继承了父类基础机器人
和高级机器人
中的类方法。
如果不是开发大型项目,不太需要用到太复杂的继承关系,所以你只需有个印象就好,我们对继承的讲解就讲到这里。