python类与继承person类_类的继承和多继承

类的继承和多继承

在面向对象的程序设计中,定义一个新的 class 的时候,可以从某个现有的 class 继承,新的 class 称为子类,而被继承的 class 称为基类、父类或超类。

Python 中继承的语法如下:

在第 1 行,定义了父类 Parent;

在第 4 行,定义了子类 Child,语法 Child(Parent) 表示类 Child 继承于类 Parent。

子类继承父类的属性和方法,使得子类具有父类的属性和方法,从而实现代码重用;同时,子类可以增加自己特有的方法。例如,下图中定义了 3 个类,类 Teacher 与类 Student 继承于类 Person,如图所示:

父类 Person 定义了属性 name 和 age,定义了方法 introduce,这些属性和方法被子类继承

子类 Teacher 定义了自己特有的属性 salary,定义了自己特有的方法 showSalary

子类 Student 定义了自己特有的属性 grade,定义了自己特有的方法 showGrade

1. 在子类中增加属性和方法

1.1 编写父类 Person

在第 2 行,定义构造方法 __init__,设置属性 name 和 age

在第 6 行,定义方法 introduce,打印属性 name 和 age

1.2 编写子类 Teacher

在第 1 行,通过语法 Teacher(Person),定义继承于 Person 的类 Teacher

在第 5 行,在构造方法中,增加类 Teacher 特有的属性 salary

在第 7 行,定义方法 showSalary,打印属性 salary

1.3 编写子类 Student

在第 1 行,通过语法 Student(Person),定义继承于 Person 的类 Student

在第 5 行,在构造方法中,增加类 Student 特有的属性 grade

在第 7 行,定义方法 showGrade,打印属性 grade

1.4 创建实例

在第 1 行,创建实例 teacher

在第 2 行,调用父类方法 introduce

在第 3 行,调用自己特有的方法 showSalary

在第 5 行,创建实例 student

在第 6 行,调用父类方法 introduce

在第 7 行,调用自己特有的方法 showGrade

运行程序,输出如下结果

第 1 行到第 3 行,是 teacher 的输出结果

第 5 行到第 7 行,是 student 的输出结果

2. 在子类中调用父类的构造方法

2.1 代码重复的问题

在前面的小节中,类 Person 的构造方法如下:

类 Teacher 的构造方法如下:

类 Student 的构造方法如下:

在这 3 段初始化代码中,存在明显的代码重复,我们希望:

初始化类 Teacher 的属性 name、age、salary 时,可以重用父类 Person 的初始化代码

初始化类 Student 的属性 name、age、grade 时,可以重用父类 Person 的初始化代码

2.2 编写父类 Person

在第 2 行,定义构造方法 __init__,设置属性 name 和 age

在第 6 行,定义方法 introduce,打印属性 name 和 age

2.3 编写子类 Teacher

在第 1 行,通过语法 Teacher(Person),定义继承于 Person 的类 Teacher

在第 3 行,通过语法 Person.__init(self, name, age)__ 调用父类的构造方法 __init__,对属性 name 和 age 进行设置

在第 4 行,在构造方法中,增加类 Teacher 特有的属性 salary

在第 6 行,定义方法 showSalary,打印属性 salary

2.4 编写子类 Student

在第 1 行,通过语法 Student(Person),定义继承于 Person 的类 Student

在第 3 行,通过语法 Person.__init(self, name, age)__ 调用父类的构造方法 __init__,对属性 name 和 age 进行设置

在第 4 行,在构造方法中,增加类 Student 特有的属性 grade

在第 6 行,定义方法 showGrade,打印属性 grade

2.5 创建实例

在第 1 行,创建实例 teacher

在第 2 行,调用父类方法 introduce

在第 3 行,调用自己特有的方法 showSalary

在第 5 行,创建实例 student

在第 6 行,调用父类方法 introduce

在第 7 行,调用自己特有的方法 showGrade

运行程序,输出如下结果

第 1 行到第 3 行,是 teacher 的输出结果

第 5 行到第 7 行,是 student 的输出结果

3. 多继承

定义一个新的 class 的时候,可以从多个现有的 class 继承,如果继承多个父类,称为多继承。Python 中多继承的语法如下:

在第 1 行,定义了父类 Father

在第 4 行,定义了父类 Mother

在第 7 行,定义了子类 Child,它继承于两个父类:Father 和 Mother

子类继承所有父类的属性和方法,从而实现代码重用。

4. 多继承的例子

4.1 概述

本节构造 3 个类:Father、Mother 和 Child,Child 继承于两个类 Father 和 Mother,它继承了这两个类的属性和方法,同时有自己特有的属性和方法,如下图所示:

4.2 编写父类 Father

在第 3 行,定义类 Father 的属性 father_attr

在第 5 行,定义类 Father 的方法 father_method

4.3 编写父类 Mother

在第 3 行,定义类 Mother 的属性 mother_attr

在第 5 行,定义类 Mother 的方法 mother_method

4.4 编写子类 Child

在第 1 行,定义类 Child,继承于 Father 和 Mother

在第 3 行,调用父类 Father 的构造方法

在第 4 行,调用父类 Mother 的构造方法

在第 7 行,定义类 Child 的方法 child_method

4.5 创建实例

在第 1 行,创建实例 Child

在第 2 行,调用继承于父类 Father 的方法 father_method

在第 3 行,调用继承于父类 Mother 的方法 mother_method

在第 4 行,调用类自己的方法 child_method

程序输出结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值