【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回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
。