【发布时间】:2023-01-14 12:46:41
【问题描述】:
我试图了解 super 在 python 的超类多重继承中是如何工作的,例如在下面的代码中:
class First():
def __init__(self, parm1, **kwargs):
super().__init__(**kwargs)
self.parm1 = parm1
self.parm3 = 'one'
class Second():
def __init__(self, parm2 = 'zero', **kwargs):
super().__init__(**kwargs)
self.parm2 = parm2
class Third(First,Second):
def __init__(self,parm1):
super().__init__(parm1=parm1)
trd = Third('tst')
print(trd.parm1) # 'tst'
print(trd.parm3) # 'one'
print(trd.parm2) # 'zero'
如果我删除 super().__init__(**kwargs) 执行结束
“第三”对象没有属性“parm2”
仅打印
parm1和parm3,即使我在Class Third(First,Second)中声明了层次结构。我知道所有类都继承自 Object 类,但我不明白它如何与父类中的 super() 类相关,以及后者如何允许访问第二个父类的属性。
【问题讨论】:
-
super()与super(__class__, <first argument>)相同
标签: python python-3.x hierarchy multiple-inheritance super