如何实现python中super()多重继承?

Python (184) 2023-04-23 01:30:50

在计算机编程中,继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。之前小编向大家介绍了python中继承函数super()(https://www.py.cn/jishu/jichu/21695.html),不过当涉及到多继承情况时,一些调用方式就会产生差异,就需要做出相应的调整。那么,我们一起来看看多继承情况下,super()如何调用吧。

实例:涉及多重继承

代码:

纯文本
复制到剪贴板
在新窗口中打开代码
EnlighterJS 3 Syntax Highlighter
classBase(object):
def__init__(self):
print("enterBase")
print("leaveBase")
classA(Base):
def__init__(self):
print("enterA")
super(A,self).__init__()
print("leaveA")
classB(Base):
def__init__(self):
print("enterB")
super(B,self).__init__()
print("leaveB")
classC(A,B):
def__init__(self):
print("enterC")
super(C,self).__init__()
print("leaveC")
c=C()
classBase(object): def__init__(self): print("enterBase") print("leaveBase") classA(Base): def__init__(self): print("enterA") super(A,self).__init__() print("leaveA") classB(Base): def__init__(self): print("enterB") super(B,self).__init__() print("leaveB") classC(A,B): def__init__(self): print("enterC") super(C,self).__init__() print("leaveC") c=C()
classBase(object):
def__init__(self):
print("enterBase")
print("leaveBase")


classA(Base):
def__init__(self):
print("enterA")
super(A,self).__init__()
print("leaveA")


classB(Base):
def__init__(self):
print("enterB")
super(B,self).__init__()
print("leaveB")

classC(A,B):
def__init__(self):
print("enterC")
super(C,self).__init__()
print("leaveC")


c=C()

输出

纯文本
复制到剪贴板
在新窗口中打开代码
EnlighterJS 3 Syntax Highlighter
C:\python36\python.exeE:/demo/testPyQt.py
enterC
enterA
enterB
enterBase
leaveBase
leaveB
leaveA
leaveC
Processfinishedwithexitcode0
C:\python36\python.exeE:/demo/testPyQt.py enterC enterA enterB enterBase leaveBase leaveB leaveA leaveC Processfinishedwithexitcode0
C:\python36\python.exeE:/demo/testPyQt.py
enterC
enterA
enterB
enterBase
leaveBase
leaveB
leaveA
leaveC

Processfinishedwithexitcode0

python中的super()方法设计目的是用来解决多重继承时父类的查找问题,所以在单重继承中用不用 super 都没关系,但是,在子类中需要调用父类时,使用super()是一个好方法哦~

THE END

发表回复