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中使用items()方法返回字典元素对的教程
May 21 Python
Python多线程和队列操作实例
Jun 21 Python
python 系统调用的实例详解
Jul 11 Python
使用python实现ANN
Dec 20 Python
Python3.5 创建文件的简单实例
Apr 26 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
Python selenium的基本使用方法分析
Dec 21 Python
python 3.8.3 安装配置图文教程
May 21 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
给Function做的OOP扩展
2009/05/07 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python学习笔记之常用函数及说明
2014/05/23 Python
python如何将图片转换为字符图片
2020/08/19 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
python 解决函数返回return的问题
2020/12/05 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
UNIX命令速查表
2012/03/10 面试题
材料物理专业大学毕业生求职信
2013/10/15 职场文书
求职推荐信
2013/10/28 职场文书
学校介绍信范文
2014/01/14 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
文化产业实施方案
2014/06/07 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
创业计划书之酒吧
2019/12/02 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS