Python3基础 super层层调用父类的__init__方法 子类的__init__覆盖了父类的__init__的解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3基础 super层层调用父类的__init__方法 子类的__init__覆盖了父类的__init__的解决方法相关的知识,希望对你有一定的参考价值。

 镇场诗:
    诚听如来语,顿舍世间名与利。愿做地藏徒,广演是经阎浮提。
    愿尽吾所学,成就一良心博客。愿诸后来人,重现智慧清净体。
——————————————————————————————————————————
ex1:
  code:

class Parent :
    def __init__(self) : #父类的构造函数
        print("父类构造完毕")

class Child1(Parent) : #child类继承于 parent类
    def __init__(self) : 
        print("子类1代构造函数")

class Child2(Child1) : #child类继承于 parent类
    def __init__(self) : 
        print("子类2代构造函数")

test=Child2();  #父类的构造函数不会出现,子类1代的构造函数也不会出现

 
  result:

============= RESTART: C:\Users\Administrator\Desktop\myCode.py =============
子类2代构造函数
>>> 

 

ex2:

  code:

class Parent :
    def __init__(self) : #父类的构造函数
        print("父类构造完毕")

class Child1(Parent) : #child类继承于 parent类
    def __init__(self) :
        print("子类1代构造函数")

class Child2(Child1) : #child类继承于 parent类
    def __init__(self) :
        super().__init__()
        print("子类2代构造函数")

test=Child2();  #构造函数有了super()才能追本溯源呀,但是。。。Child1没有super那么会出现 

  

  result:

============= RESTART: C:\Users\Administrator\Desktop\myCode.py =============
子类1代构造函数
子类2代构造函数
>>> 

 

ex3:

  code:

class Parent :
    def __init__(self) : #父类的构造函数
        print("父类构造完毕")

class Child1(Parent) : #child类继承于 parent类
    def __init__(self) :
        super().__init__()
        print("子类1代构造函数")

class Child2(Child1) : #child类继承于 parent类
    def __init__(self) :
        super().__init__()
        print("子类2代构造函数")

test=Child2();    #每一级都有super才好呢

 

  result:

============= RESTART: C:\Users\Administrator\Desktop\myCode.py =============
父类构造完毕
子类1代构造函数
子类2代构造函数
>>> 

 


——————————————————————————————————————————
博文的精髓,在技术部分,更在镇场一诗。Python版本3.5,系统 Windows7。
Python是优秀的语言,值得努力学习。我是跟着小甲鱼视频教程学习的,推荐。
我是一个新手,所以如果博文的内容有可以改进的地方,甚至有错误的地方,请留下评论,我一定努力改正,争取成就一个良心博客。
注:此文仅作为科研学习,如果我无意中侵犯了您的权益,请务必及时告知,我会做出改正。












以上是关于Python3基础 super层层调用父类的__init__方法 子类的__init__覆盖了父类的__init__的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

Python3基础 super 子类调用父类的__init__

super_父类

说说 Python 的继承

python使用super()调用父类的方法

python-子类构造函数调用super().__init__()

python语言中多继承中super调用所有父类的方法以及要用到的MRO顺序