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的另外几种语言实现
Jan 29 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 Python
详解Python字符串对象的实现
Dec 24 Python
python中import reload __import__的区别详解
Oct 16 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
Python实现元素等待代码实例
Nov 11 Python
详解Python实现进度条的4种方式
Jan 15 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
快速入门python学习笔记
2017/12/06 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
通过实例学习Python Excel操作
2020/01/06 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
剪彩仪式主持词
2014/03/19 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
个人担保书格式范文
2014/05/12 职场文书
公司踏青活动方案
2014/08/16 职场文书
校长师德表现自我评价
2015/03/05 职场文书
运动会观后感
2015/06/09 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技