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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
python机器学习之决策树分类详解
Dec 20 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
python应用文件读取与登录注册功能
Sep 23 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
django框架auth模块用法实例详解
Dec 10 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python3爬虫带上cookie的实例代码
Jul 28 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 中dirname(_file_)讲解
2007/03/18 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
js a标签点击事件
2017/03/30 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
仓管岗位职责范本
2014/02/08 职场文书
党风廉设责任书
2014/04/16 职场文书
树转促学习心得体会
2014/09/10 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
小学毕业感言200字
2015/07/30 职场文书
董事长秘书工作总结
2015/08/14 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
六年级作文之预言作文
2019/10/25 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js