继承
Python支持类的继承,同时也支持多继承,其派生类定义如下:
- class DerivedClass(BaseClass1, BaseClass2,..., BaseClassN):
- 类的属性
- 类的方法
Python
请注意基类的排列顺序,当子类调用自身没有定义的方法,也并没有指定具体的基类名称时,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()
Python
输出结果:
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
。