super().__init__()理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super().__init__()理解相关的知识,希望对你有一定的参考价值。


  • D 的类的顺序的是[D,B,A,C]
  • 继承父类的的__init__方法在在类A中已经到终点,
    A.mro()
    Out[368]: [main.A, object],所以C不再执行
class A:
def __init__(self):
print(A)

class B(A):
def __init__(self):
print(B)
super().__init__()
class C:
def __init__(self):
print(C)
super().__init__()
class D(B,C):
def __init__(self):
print(D)
super().__init__()
d = D()

print(D.mro())
D
B
A
[<class __main__.D>, <class __main__.B>, <class __main__.A>, <class __main__.C>, <class object>]

super().__init__()理解(三)_类继承

  • 很简单当我们转换B,C的位置,类继承的顺序是[D,C,B,A],因为C中有
    super().init(),指向B,我们看到 都执行了
class A:
def __init__(self):
print(A)

class B(A):
def __init__(self):
print(B)
super().__init__()
class C:
def __init__(self):
print(C)
super().__init__()
class D(C,B):
def __init__(self):
print(D)
super().__init__()
d = D()

print(D.mro())
D
C
B
A
[<class __main__.D>, <class __main__.C>, <class __main__.B>, <class __main__.A>, <class object>]


以上是关于super().__init__()理解的主要内容,如果未能解决你的问题,请参考以下文章

super().__init__(*args, **kwargs) 做啥?

推荐使用的派生方法:super().__init__()

python中super().__init__和类名.__init__的区别

super的使用

用 super() 装饰子类的 __init__ 方法

Python类中super()和__init__()的关系