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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
python中的reduce内建函数使用方法指南
Aug 31 Python
Python字典操作简明总结
Apr 13 Python
一张图带我们入门Python基础教程
Feb 05 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
python实现简易内存监控
Jun 21 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
python读取文件名并改名字的实例
Jan 07 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python有几个版本
Jun 17 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
详解Vue 全局变量,局部变量
2019/04/17 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
python实现图片批量剪切示例
2014/03/25 Python
浅析python中的分片与截断序列
2016/08/09 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python实现多层感知器
2019/01/18 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Python的几种主动结束程序方式
2019/11/22 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
商业活动邀请函
2014/02/04 职场文书
我的画教学反思
2014/04/28 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
民事起诉状范文
2015/05/19 职场文书
居安思危观后感
2015/06/11 职场文书
矛盾论读书笔记
2015/06/29 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS