美文网首页python技巧
python的多重继承

python的多重继承

作者: 陆_志东 | 来源:发表于2018-08-25 16:09 被阅读0次

python的多重继承最好建议使用super的方法调用父类,如果使用父类的类名去调用,就会造成重复调用父类的情况
比如下面的代码:

class A:
  def __init__(self):
    print("init A")

class B(A):
  def __init__(self):
    A.__init__(self)
    print("init B")

class C(A):
  def __init__(self):
    A.__init__(self)
    print("init C")

class D(B,C):
  def __init__(self):
    B.__init__(self)
    C.__init__(self)
    print("init D")

d = D()
执行结果:
init A
init B
init A
init C
init D
可以看到 A是被初始化两次的
所以这是使用父类名调用的不好的方式
下面的super的方式就不会出现这样的问题,这是因为super在调用的时候,会进行规则的排序

下面是改用了super进行调用的方式:

class A:
  def __init__(self):
    print("init A")

class B(A):
  def __init__(self):
    super(B,self).__init__()
    print("init B")

class C(A):
  def __init__(self):
    super(C,self).__init__()
    print("init C")

class D(B,C):
  def __init__(self):
    super(D,self).__init__()
    print("init D")

d = D()
打印结果:
initA
initC
initB
initD
这个顺序是调用父类的时候super进行对父类执行的顺序进行排序过的

相关文章

  • 面向对象

    类的定义方法 子类的定义 多重继承 python允许多重继承。

  • Python多重继承(拓扑排序)(9)

    Python跟Java不同,Java只能单继承(不过有多实现),而Python能够多重继承。其多重继承遵循拓扑排序...

  • Python:12多重继承

    python 多重继承之拓扑排序

  • 面向对象高级编程(二)-多重继承&定制类

    多重继承 继承是面向对象编程的一个重要方式,通过继承,子类可以扩展父类的功能。 在python中,可以通过多重继承...

  • 当心掉进Python多重继承里的坑

    关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,...

  • 当心掉进Python多重继承里的坑

    关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,...

  • 35-python中多重继承

    除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。 多重继承的继承链就不是一棵树了,它像这样: ...

  • python学习日记-2016.7.21

    1.多重继承 python的多重继承可以使一个子类得到多个父类的所有功能,定义多重继承很简单,只需要在定义类时在类...

  • Python基础总结(九)(继承和多态)

    这里主要列出Python中有关继承和多态的略微特殊的知识点,常见更多继承多态问题 Python允许多重继承,使用下...

  • python的多重继承

    python的多重继承最好建议使用super的方法调用父类,如果使用父类的类名去调用,就会造成重复调用父类的情况比...

网友评论

    本文标题:python的多重继承

    本文链接:https://www.haomeiwen.com/subject/ximviftx.html