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数据结构之图的实现方法
Jul 08 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
Python list和str互转的实现示例
Nov 16 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python中print格式化输出的问题
Apr 16 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实现可运算的验证码
2015/11/10 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python中装饰器高级用法详解
2017/12/25 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
中式餐厅创业计划书范文
2014/01/23 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
生活部的活动方案
2014/08/19 职场文书
教师党员整改措施
2014/10/24 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸