Python实现通过继承覆盖方法示例


Posted in Python onJuly 02, 2018

本文实例讲述了Python实现通过继承覆盖方法。分享给大家供大家参考,具体如下:

Python真是太动态了,所有的方法默认都是虚的。子类定义父类同名函数之后,父类函数被覆盖。

class P(object):
  def foo(self):
    print "I am a P-foo()"
class C(P):
  def foo(self):
    print "I am a C-foo()"
>>>p=P()
>>>c=C()
>>>p.foo()
I am a P-foo()
>>>c.foo()
I am a C-foo()

这就引出了一个问题:重写__init__不会自动调用基类的__init__。在C++中如果使用了派生类默认构造函数的话,是会自动调用基类的默认默认构造函数的。C++中调用非默认构造函数是显示调用基类构造函数来初始化基类部分的。

class P(object):
  def __init__(self):
    print "P's constructor"
class C(P):
  def __init__(self):
    print "C's constructor"
>>>c=C()
C's constructor

如果需要调用基类构造函数时,可将C类定义改为

class C(P):
  def __init__(self):
 P.__init__(self)
    print "C's constructor"

或者

class C(P):
  def __init__(self):
 super(C,self).__init__()
    print "C's constructor"

使用super(className,self).functionName(没有self!!)的重点是不需要提供父类,这意味着如果改变了类继承关系,只需要改变一行代码(class C(P)),此时寻找基类的事由super函数完成。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
举例讲解Python常用模块
Mar 08 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Python流程控制 if else实现解析
Sep 02 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python实现logistic分类算法代码
Feb 28 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
Numpy数组的广播机制的实现
Nov 03 Python
Python中过滤字符串列表的方法
Dec 22 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 #Python
Python 中的range(),以及列表切片方法
Jul 02 #Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 #Python
分享vim python缩进等一些配置
Jul 02 #Python
实践Vim配置python开发环境
Jul 02 #Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 #Python
Django实现分页功能
Jul 02 #Python
You might like
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
jquery 问答知识整理
2010/02/11 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
js实现数组转换成json
2015/06/26 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
教导处工作制度
2014/01/18 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
2014年工程工作总结
2014/11/25 职场文书
2014年底个人工作总结
2015/03/10 职场文书
公积金贷款承诺书
2015/04/30 职场文书
八年级数学教学反思
2016/02/17 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers