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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
python把1变成01的步骤总结
Feb 27 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
Python devel安装失败问题解决方案
Jun 09 Python
python如何变换环境
Jul 21 Python
python绘制分布折线图的示例
Sep 24 Python
python生成随机数、随机字符、随机字符串
Apr 06 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 禁止页面缓存输出
2009/01/07 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
12步教你理解Python装饰器
2016/02/25 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python 实现生成均匀分布的点
2019/12/05 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
户外拓展活动方案
2014/02/11 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
聚会通知怎么写
2015/04/23 职场文书
会议主持词通用版
2019/04/02 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python