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中统计函数运行耗时的方法
May 05 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
Python何时应该使用Lambda函数
Jul 02 Python
实例详解Python装饰器与闭包
Jul 29 Python
python科学计算之narray对象用法
Nov 25 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
python实现学生成绩测评系统
Jun 22 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
Python Django项目和应用的创建详解
Nov 27 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 缩略图实现函数代码
2011/06/23 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python自动抢红包教程详解
2019/06/11 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
简单的Python调度器Schedule详解
2019/08/30 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
学校门卫岗位职责
2014/03/16 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis