Python同样有限的支持多继承形式。多继承的类定义形如下例:
class 子类(父类1, 父类2, 父类3):
<方法1>
.
.
.
<方法N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
特性:
子类可以继承使用父类们中的非私有属性和方法
子类只会使用到第一个父类中的属性(取决于顺序),其它父类不使用,即使不同名也不会使用
当父类中有同名方法时,调用方法时,会先调用第一个父类中的方法(取决于顺序),其它方法不调用
说明:能用单继承解决的,尽量用单继承
列:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
class A():
def __init__(self,name):
self.name = name
def p(self,name):
return name
def o(self):
return self.name
class B():
def __init__(self,name):
self.name = name
def i(self,age):
print (age,"-----")
print (self.name)
return "123456"
def p(self,name):
return "dierge"
class C(A,B):
def u(self,tab):
return tab
a=A("aaa")
print (a.p('sss'))
print (a.o())
b=B("qqq")
print (b.i(12))
c=C("wwww")
print (c.u("1233211234567"))
print ("==============")
print (c.i("123"))
print (c.i("123"))
print ("==============")
print (c.p("chen"))
输出如下:
当class C(A,B): 改成 class C(B,A): 时输出如下: