python 类继承详解

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基类的初始化生成

结果如下
python 类继承详解_第1张图片

解析:
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()

你可能感兴趣的:(python,继承,多继承,super())