每个人的Python:数学、算法和游戏编程训练营
上QQ阅读APP看书,第一时间看更新

1.5.2 类的继承

一门编程语言如果只支持类却不支持继承,就不能说它是一门完善的面向对象语言。面向对象编程带来的最大便利在于代码的重用,而实现重用的最好方式就是继承。

通过继承,Python中的类可以派生出许多子类,被继承的类被称为父类,继承的类被称为子类。Python中的继承有如下几个特点:

(1)在子类的初始化方法中,通常需要先调用父类的初始化方法。

(2)子类在调用父类的方法时,需要使用类名进行调用,并且需要显式地传递self参数。

(3)Python是一种支持多继承的语言,也就是说,一个子类可以有多个父类。

下面的代码将演示基础的继承的使用:

运行上面的代码,通过打印信息可以看到程序可以正确地运行。EnergyCar类表示新能源汽车,新能源汽车与传统的汽车有很多相似之处,比如都有品牌、都可以行驶等,但是它们也有不同之处,最显著的不同在于新能源汽车需要充电。在EnergyCar类中并没有实现run方法,但是其实例依然可以调用这个方法,这要归功于继承,EnergyCar类继承于Car类,默认情况下,EnergyCar类会拥有所有Car类的功能。另一方面,子类除了默认拥有父类的功能外,还可以对父类的功能进行扩展,正如上面的代码所示,EnergyCar类中新增了一个汽车充电的charge方法。如果父类中的某些已有的方法不能满足子类所需要的功能,子类也可以对父类的方法进行重写,例如,如果需要在新能源汽车行驶后消耗一部分电量,可以这么做:

关于Python中的类,其实还有很多高级功能,例如多继承,可以让子类同时拥有多个父类的功能,这在许多编程语言中是不可实现的;例如属性和方法的私有化,使用双下画线开头进行命名的属性和方法默认是私有的,在类外不能访问。关于更多Python的高级功能,我们就不在这里做过多讲解了,关于面向对象的开发思路,我们也点到为止,有兴趣的话,可以自己编写代码尝试一下。