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中的内存泄漏
Apr 23 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
python实现rsa加密实例详解
Jul 19 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
python 并发下载器实现方法示例
Nov 22 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python函数式编程实例详解
Jan 17 Python
Python常用库大全及简要说明
Jan 17 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
用Python自动清理系统垃圾的实现
Jan 18 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
PHP内置加密函数详解
2016/11/20 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
表格 隔行换色升级版
2009/11/07 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
大学本科毕业生求职信范文
2013/12/18 职场文书
自我评价的范文
2014/02/02 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis