Python子类继承父类的构造函数


前言

子类继承父类的构造函数__init__,具体有几种情况,想一口气说出来还真有点难。看到菜鸟教程总结的非常不错,特意记录下来,也方便自己后面翻阅。

详情

  • 情况一

    子类不重写__init__方法,实例化后会自动调用父类的__init__方法。

    实例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
      
    class Son(Father):
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    输出结果:

    name: runoob
    Son runoob
    
  • 情况二

    子类重写__init__方法,实例化后会覆盖父类的__init__方法,父类的__init__方法不再执行。

    实例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
     
    class Son(Father):
        def __init__(self, name):
            print("hi")
            self.name = name
    
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    输出结果:

    hi
    Son runoob
    
  • 情况三

    子类重写__init__方法,同时又需要调用父类的__init__方法,使用super()函数,super()是一个特殊函数,可以调用父类的__init__方法。

    实例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
     
    class Son(Father):
        def __init__(self, name):
            super().__init__(name)
            print("hi")
            self.name = name
    
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    输出结果:

    name: runoob
    hi
    Son runoob
    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM