Python多继承与super中执行顺序的问题

class A(object):
    def go(self):
        print("go A go!")

    def stop(self):
        print("stop A stop!")


class B(A):
    def go(self):
        super().go()
        print("go B go!")


class C(A):
    def go(self):
        super().go()
        print("go C go!")

    def stop(self):
        super().stop()
        print("stop C stop!")


class D(B, C):
    def go(self):
        super(D, self).go()
        print("go D go!")

    def stop(self):
        super().stop()
        print("stop D stop!")


class E(B, C):
    pass


a = A()
b = B()
c = C()
d = D()
d.go()
d.stop()

个人理解,如出现错误请指教

类D多继承于类B、C,类B、C都继承于类A
执行到d.go()时,首先执行类D自己的go方法,代码执行到super().go(),


首先去调用D类的第一个父类B中的go方法,(相当于获取一个内存地址)同样遇到super().go(),
进而调用A类中的go方法,打印出  go A go! (B中的内存地址并未释放


然后执行D的第二个父类C,调用C中的go方法,C中重写A中的go方法,

但是先执行B中的go方法,但是此时调用C的父类A中的go方法时,
已经被B先一步的调用,因此执行C自己go方法中的打印语句,此时C调用完毕,释放地址,但是B的地址未释放,接着执行B中的打印语句
最后执行D中的打印语句
 

执行结果如下:

go A go!
go C go!
go B go!
go D go!
stop A stop!
stop C stop!
stop D stop!
 

猜你喜欢

转载自blog.csdn.net/qq_41292236/article/details/101424954
今日推荐