1. 在子类中增加属性和方法
1.1 编写父类 Person
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 2 行,定义构造方法 __init__,设置属性 name 和 age
- 在第 6 行,定义方法 introduce,打印属性 name 和 age
1.2 编写子类 Teacher
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 1 行,通过语法 Teacher(Person),定义继承于 Person 的类 Teacher
- 在第 5 行,在构造方法中,增加类 Teacher 特有的属性 salary
- 在第 7 行,定义方法 showSalary,打印属性 salary
1.3 编写子类 Student
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 1 行,通过语法 Student(Person),定义继承于 Person 的类 Student
- 在第 5 行,在构造方法中,增加类 Student 特有的属性 grade
- 在第 7 行,定义方法 showGrade,打印属性 grade
1.4 创建实例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在第 1 行,创建实例 teacher
- 在第 2 行,调用父类方法 introduce
- 在第 3 行,调用自己特有的方法 showSalary
- 在第 5 行,创建实例 student
- 在第 6 行,调用父类方法 introduce
- 在第 7 行,调用自己特有的方法 showGrade
运行程序,输出如下结果
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 第 1 行到第 3 行,是 teacher 的输出结果
- 第 5 行到第 7 行,是 student 的输出结果
2. 在子类中调用父类的构造方法
2.1 代码重复的问题
在前面的小节中,类 Person 的构造方法如下:
- 1
- 2
- 3
- 4
类 Teacher 的构造方法如下:
- 1
- 2
- 3
- 4
- 5
类 Student 的构造方法如下:
- 1
- 2
- 3
- 4
- 5
在这 3 段初始化代码中,存在明显的代码重复,我们希望:
- 初始化类 Teacher 的属性 name、age、salary 时,可以重用父类 Person 的初始化代码
- 初始化类 Student 的属性 name、age、grade 时,可以重用父类 Person 的初始化代码
2.2 编写父类 Person
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 2 行,定义构造方法 __init__,设置属性 name 和 age
- 在第 6 行,定义方法 introduce,打印属性 name 和 age
2.3 编写子类 Teacher
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在第 1 行,通过语法 Teacher(Person),定义继承于 Person 的类 Teacher
- 在第 3 行,通过语法 Person.__init(self, name, age)__ 调用父类的构造方法 __init__,对属性 name 和 age 进行设置
- 在第 4 行,在构造方法中,增加类 Teacher 特有的属性 salary
- 在第 6 行,定义方法 showSalary,打印属性 salary
2.4 编写子类 Student
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在第 1 行,通过语法 Student(Person),定义继承于 Person 的类 Student
- 在第 3 行,通过语法 Person.__init(self, name, age)__ 调用父类的构造方法 __init__,对属性 name 和 age 进行设置
- 在第 4 行,在构造方法中,增加类 Student 特有的属性 grade
- 在第 6 行,定义方法 showGrade,打印属性 grade
2.5 创建实例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在第 1 行,创建实例 teacher
- 在第 2 行,调用父类方法 introduce
- 在第 3 行,调用自己特有的方法 showSalary
- 在第 5 行,创建实例 student
- 在第 6 行,调用父类方法 introduce
- 在第 7 行,调用自己特有的方法 showGrade
运行程序,输出如下结果
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 第 1 行到第 3 行,是 teacher 的输出结果
- 第 5 行到第 7 行,是 student 的输出结果
3. 多继承
定义一个新的 class 的时候,可以从多个现有的 class 继承,如果继承多个父类,称为多继承。Python 中多继承的语法如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 1 行,定义了父类 Father
- 在第 4 行,定义了父类 Mother
- 在第 7 行,定义了子类 Child,它继承于两个父类:Father 和 Mother
子类继承所有父类的属性和方法,从而实现代码重用。
4. 多继承的例子
4.1 概述
本节构造 3 个类:Father、Mother 和 Child,Child 继承于两个类 Father 和 Mother,它继承了这两个类的属性和方法,同时有自己特有的属性和方法,如下图所示:
4.2 编写父类 Father
- 1
- 2
- 3
- 4
- 5
- 6
- 在第 3 行,定义类 Father 的属性 father_attr
- 在第 5 行,定义类 Father 的方法 father_method
4.3 编写父类 Mother
- 1
- 2
- 3
- 4
- 5
- 6
- 在第 3 行,定义类 Mother 的属性 mother_attr
- 在第 5 行,定义类 Mother 的方法 mother_method
4.4 编写子类 Child
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在第 1 行,定义类 Child,继承于 Father 和 Mother
- 在第 3 行,调用父类 Father 的构造方法
- 在第 4 行,调用父类 Mother 的构造方法
- 在第 7 行,定义类 Child 的方法 child_method
4.5 创建实例
- 1
- 2
- 3
- 4
- 在第 1 行,创建实例 Child
- 在第 2 行,调用继承于父类 Father 的方法 father_method
- 在第 3 行,调用继承于父类 Mother 的方法 mother_method
- 在第 4 行,调用类自己的方法 child_method
程序输出结果如下:
- 1
- 2
- 3