Python子类继承父类构造函数的三种实现方式

纸上星河
纸上星河
发布时间:2026-10-13| 6人浏览过
原创

本文详解Python中子类继承父类构造函数的三种场景:不重写__init__时自动调用、重写__init__时父类构造被忽略,以及使用super或父类名显式调用父类构造。通过Father与Son类的代码示例,展示不同实现下的输出结果及注意事项,帮助开发者正确处理类初始化逻辑。

若子类需要保留父类的构造逻辑,必须显式调用父类的构造方法,或者选择不重写父类的构造方法。

当子类未定义 __init__ 方法时,实例化子类会自动触发父类中已定义的 __init__ 方法。

class Father(object):
  def __init__(self, name):
    self.name=name
    print ( "name: %s" %( self.name) )
  def getName(self):
    return 'Father ' + self.name
 
class Son(Father):
  def getName(self):
    return 'Son '+self.name
 
if __name__=='__main__':
  son=Son('runoob')
  print ( son.getName() )

运行上述逻辑的输出结果为:

name: runoob Son runoob

若在子类中重写了 __init__ 方法,实例化子类时将不再自动调用父类已定义的 __init__。其语法结构如下:

class Father(object):
  def __init__(self, name):
    self.name=name
    print ( "name: %s" %( self.name) )
  def getName(self):
    return 'Father ' + self.name
 
class Son(Father):
  def __init__(self, name):
    print ( "hi" )
    self.name = name
  def getName(self):
    return 'Son '+self.name
 
if __name__=='__main__':
  son=Son('runoob')
  print ( son.getName() )

该情况下的输出结果为:

hi Son runoob

若在子类中重写了 __init__ 但仍需继承父类的构造逻辑,可通过 super 关键字实现:

super(子类,self).__init__(参数1,参数2,....)

此外,还存在一种传统的调用写法:

父类名称.__init__(self,参数1,参数2,...)
class Father(object):
  def __init__(self, name):
    self.name=name
    print ( "name: %s" %( self.name))
  def getName(self):
    return 'Father ' + self.name
 
class Son(Father):
  def __init__(self, name):
    super(Son, self).__init__(name)
    print ("hi")
    self.name = name
  def getName(self):
    return 'Son '+self.name
 
if __name__=='__main__':
  son=Son('runoob')
  print ( son.getName() )

使用上述两种方法之一的输出结果为:

name: runoob hi Son runoob

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。