1
Python编程从入门到实践
1.12.2 8.2 类的继承
8.2 类的继承

继承是面向对象的编程的三大特性之一,继承可以解决编程中的代码冗余问题,是实现代码重用的重要手段。本节的目标是了解并掌握类的继承。

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是使用继承机制。继承完全可以理解成类之间的类型和子类型关系。

类的继承是指在一个现有类的基础上,构建一个新的类。构建的新类能自动拥有原有类的属性和方法。构建出来的新类叫子类,原有类称为父类。也可以理解成类之间的类型和子类型关系。

继承的语法格式如下:

class子类名(父类名):

如现有一个类,类名为A,定义如下:

class A(object):

现要定义类B继承类A,将B类当作A类的子类,则B类定义如下:

class B(object):

需要注意的是,继承语法“class子类名(父类名):”也可写成“class派生类名(基类名):”。其中,父类名写在括号中。父类是在类定义时,在元组中指明的。

在Python中继承具有如下一些特点:

在继承中,父类的构造(__init__()方法)不会被自动调用,它需要在其子类的构造中亲自专门调用。

在调用父类的方法时,需要加上父类的类名前缀,并且需要带上self参数变量,以区别于在类中调用普通函数时并不需要带上self参数。

Python总是首先查找对应类型的方法,如果它不能在子类中找到对应的方法,会到父类中逐个查找(先在本类中查找调用的方法,找不到才到父类中找)。

如果在继承元组中列了一个以上的类,那么它就被称为“多重继承”。子类的声明与它们的父类类似,继承的父类列表跟在类名之后,其语法为:

class类名(父类名1[父类名2,…]):

【例8.9】类的继承操作实例。

以上实例输出结果如图8-12所示。

图8-12 输出结果

继承多个类操作示意如下:

可以使用issubclass()或者isinstance()方法来检测是否是子类,方法如下。

issubclass()布尔函数

用于判断一个类是另一个类的子类或者子孙类。其语法为:

isinstance(obj,class)布尔函数

如果obj是class类的实例对象或者是一个class子类的实例对象,则返回True。