Python 类继承
python中类的继承(*-*)“show me the code ,and no BB”
class A(object):
def __init__(self):
print("this is A class init()")
self.Aname = "A"
self.name = "name"
class B(A):
def __init__(self):
super().__init__()
self.Bname = "B"
self.name = "Bname"
print("this is B class init()")
class C(B, A):
def __init__(self):
super().__init__()
print("this is c class init()Aname:%s,Bname%s,Name:%s"%(self.Aname,self.Bname,self.name))
c = C()
# B 调用 super().init()是因为 c 类调用了Aname 需要A基类的初始化生成
结果如下
解析:
A类里面有一个__init__():初始化了Aname 、name
B类里面也有一个__init__():继承了A类,调用了A类的__init__(),并且初始化了Bname,重新赋值了name
C类里面的__init__():调用了父类的__init__()
代码 c = C()执行时产生命令所运行的顺序
其实这儿是Mro/搜索顺序的问题c = c()的时候 会立刻调用init()而init里面调用了super()
Mro顺序是:B A ,所以调用B.init() 而B.ini()调用了super 其Mro顺序是A 所以调用 A.init()