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生成随机验证码的两种方法
Dec 22 Python
深入浅析python继承问题
May 29 Python
详解python中的json的基本使用方法
Dec 21 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
python Pandas 读取txt表格的实例
Apr 29 Python
python发送告警邮件脚本
Sep 17 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 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中文汉字验证码
2007/04/08 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
angular.bind使用心得
2015/10/26 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
js实现验证码功能
2020/07/24 Javascript
python分数表示方式和写法
2019/06/26 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
通过实例解析python描述符原理作用
2020/01/22 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
研究生毕业鉴定
2014/01/29 职场文书
高中生家长寄语大全
2014/04/03 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
cypress测试本地web应用
2022/06/01 Javascript