Python中查找属性和接口的规则会从下至上【从基类往上找】,从左至右【从派生最左侧的基类开始查找】
#在python多继承中,在查找类属性的时候会
#从下至上,从左向右查找
#如果派生类不调用基类的构造函数
#那么派生类在构造的时候是不会调用基类的构造函数的
#这个和C++类的派生是有些区别的
#C++中的派生类会默认调用基类的构造函数,而不用
#显示的去调用
<strong><span style="font-size:24px;color:#ff0000;">#搜索以深度优先法进行,一路走向继承树的顶端,而且从左至右。</span></strong>
class BaseA:
name=""
id="BaseA"
def __init__(self):
id="this is BaseA"
def __repr__(self):
print('name=%s id=%s' % (name, id))
class BaseB:
name=""
id = "BaseB"
def __init__(self):
id="this is BaseB"
def __repr__(self):
print('name=%s id=%s' % (name, id))
class Base(BaseA, BaseB):
def showName(self):
text = "your name=%s" % (self.name)
print(text)
def showID(self):
print ("your id=%s" % (self.id))
class SuperA():
id="SuperA"
if __name__ == "__main__":
b1 = Base();
#print(b1.showName())
print(b1.showID())
a = SuperA()
print(a.id)
#输出结果
#your id=BaseA
#None
#SuperA