Python 子类继承父类构造函数

2021/9/24 22:10:40

本文主要是介绍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
    


这篇关于Python 子类继承父类构造函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程