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中的引用和拷贝浅析
Nov 22 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
python学习开发mock接口
Apr 28 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
Python 列表去重去除空字符的例子
Jul 20 Python
Python流程控制 while循环实现解析
Sep 02 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
Python实现SMTP邮件发送
Jun 16 Python
keras 多任务多loss实例
Jun 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
?繁体转换的class
2006/10/09 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
在python中pandas的series合并方法
2018/11/12 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
parser.add_argument中的action使用
2020/04/20 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
临床专业自荐信
2014/06/22 职场文书
企业委托书范本
2014/09/13 职场文书
实习生工作证明范本
2014/09/14 职场文书
2014年药店工作总结
2014/11/20 职场文书