Python子类继承父类构造函数详解


Posted in Python onFebruary 19, 2019

如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。

子类不重写 __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 相关文章推荐
python中根据字符串调用函数的实现方法
Jun 12 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
pycham查看程序执行的时间方法
Nov 29 Python
Flask框架工厂函数用法实例分析
May 25 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 #Python
Python3标准库总结
Feb 19 #Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 #Python
对python周期性定时器的示例详解
Feb 19 #Python
Python3数字求和的实例
Feb 19 #Python
对Python定时任务的启动和停止方法详解
Feb 19 #Python
python的schedule定时任务模块二次封装方法
Feb 19 #Python
You might like
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Python深度优先算法生成迷宫
2018/01/22 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python常用特殊方法实例总结
2019/03/22 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
python 如何区分return和yield
2020/09/22 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
进步之星获奖感言
2014/02/22 职场文书
大学生社会实践方案
2014/05/11 职场文书
单位委托书
2014/10/15 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
安全教育日主题班会
2015/08/13 职场文书
优秀创业计划书分享
2019/07/19 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
python基础入门之普通操作与函数(三)
2021/06/13 Python