多继承
Python同样有限的支持多继承形式。多继承的类定义形如下例:
classDerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
实例(Python 3.0+)
#!/usr/bin/python3#类定义classpeople: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def__init__(self,n,a,w): self.name = n self.age = a self.__weight = w defspeak(self): print("%s 说: 我 %d 岁。" %(self.name,self.age))#单继承示例classstudent(people): grade = '' def__init__(self,n,a,w,g): #调用父类的构函 people.__init__(self,n,a,w) self.grade = g #覆写父类的方法 defspeak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))#另一个类,多重继承之前的准备classspeaker(): topic = '' name = '' def__init__(self,n,t): self.name = n self.topic = t defspeak(self): print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))#多重继承classsample(speaker,student): a ='' def__init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t)test = sample("Tim",25,80,4,"Python")test.speak() #方法名同,默认调用的是在括号中参数位置排前父类的方法
执行以上程序输出结果为:
我叫Tim,我是一个演说家,我演讲的主题是Python