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获取豆瓣电影简介代码分享
Jan 16 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
python数字图像处理实现直方图与均衡化
May 04 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python实现udp聊天窗口
Mar 31 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
使用python绘制分组对比柱状图
Apr 21 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
php实现对象克隆的方法
2015/06/20 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
$()JS小技巧
2007/07/21 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
原生js实现分页效果
2020/09/23 Javascript
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
五年级语文教学反思
2014/01/30 职场文书
表彰先进的通报
2014/01/31 职场文书
民间个人借款协议书
2014/09/30 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis