在Python中,如果要编写的类是另一个类的特殊版本,可以使用继承。一个类A继承另一个类B,类A将自动获得类B的所有属性和方法,类B叫做父类,而类A叫做子类。假设有一个类是表示“人”的类,而另一个类是表示“学生”的类,因为“学生”是“人”的特殊版本,因此可以把表示“人”的类当作父类,表示“学生”的类当作子类。
1 定义父类
对于“人”来说,应该具有“姓名”和“年龄”两个属性,另外还具有一个显示自己属性的方法,代码如图1所示。
图1 定义父类
其中,People类具有两个属性,分别是name和age;具有一个方法,是showpeople(),该方法的作用是显示人的姓名和年龄。
2 定义子类
对于“学生”是“人”的特殊版本,除了具有人的“姓名”和“年龄”属性之外,还具有“学号”和“成绩”两个特殊属性。另外还具有一个显示自己属性的方法,代码如图2所示。
图2 定义子类
图2中定义了名为Student的类,在类名后的圆括号中指定了其父类为People。
在创建子类实例时,Python首先要完成的任务是给父类的所有属性赋值。因此,如图2中所示的子类__init__()方法中,首先通过super()方法获取其父类,之后调用其父类的__init__()方法为其父类的属性赋值;之后定义了自己的两个特殊属性num和score并进行赋值;showstudent()方法的作用是显示子类的四个属性,这四个属性包括子类的两个特殊属性num、score和从父类继承过来的两个属性name、age。
3 使用子类
通过图3所示代码实例化子类,并通过该实例调用父类和子类的方法。
图3 使用子类的代码
stu是Student类的实例,通过该实例调用了People类的showpeople()方法和Student类的showstudent()方法,输出的信息如图4所示。
图4 输出信息
从图4中可以看出,Student类继承了其父类People的showpeople方法,因此可以通过stu调用该方法。