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对比C语言的编程思想差异
Aug 30 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
Django异步任务之Celery的基本使用
Mar 23 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
Python调用JavaScript代码的方法
Oct 27 Python
python scipy 稀疏矩阵的使用说明
May 26 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
php ios推送(代码)
2013/07/01 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
Django用户认证系统 User对象解析
2019/08/02 Python
python else语句在循环中的运用详解
2020/07/06 Python
python 操作excel表格的方法
2020/12/05 Python
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
技能比武方案
2014/05/21 职场文书
市场营销计划书范文
2015/01/16 职场文书
水电工程师岗位职责
2015/02/13 职场文书
保卫工作个人总结
2015/03/03 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle
python中 Flask Web 表单的使用方法
2022/05/20 Python