Python:继承

大数据学习路线图

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回Python教程首页]

继承

Python支持类的继承,同时也支持多继承,其派生类定义如下:

class DerivedClass(BaseClass1, BaseClass2,..., BaseClassN):
    类的属性
    类的方法

请注意基类的排列顺序,当子类调用自身没有定义的方法,也并没有指定具体的基类名称时,python会从左到右依次查找继承的基类中是否包含该方法,直到找到就停止,否则报错。
例如:

#定义Animal类
class Animal:
    def eat(self):
        print("animal is eatting")
#定义People类
class People:
    def eat(self):
        print("people is eatting")
    def speak(self):
        print("people is speaking")
#定义Student类,继承People类和Animal类
class Student(People,Animal):
    pass
#定义Teacher类,继承Animal类和People类
class Teacher(Animal,People):
    pass   #表示待填充的方法体

#Student类的实例s  
#Student类没有定义构造方法,创建类的实例时调用默认的无参构造方法
s = Student()
s.eat()
#Teacher类的实例t
t = Teacher()
t.speak()

输出结果:

people is eatting
people is speaking

当Student类的实例s调用eat()方法时,因为Student类继承父类的顺序是(People,Animal),所以先找People类是否有eat()方法,有就调用People的eat()方法,打印出people is eatting
当Teacher类的实例t调用speak()方法时,Teacher类本身没有定义speak()方法,所以搜索其父类(Animal,People),第一个父类Animal没有搜索到speak()方法,继续搜索第二个父类People,能搜索到speak()方法,于是调用People的speak()方法,打印people is speaking