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写的一个squid访问日志分析的小程序
Sep 17 Python
Python的Django框架使用入门指引
Apr 15 Python
详解Python中用于计算指数的exp()方法
May 14 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
Python装饰器用法实例总结
May 26 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python读写csv文件方法详细总结
Jul 05 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python实现位图分割的效果
Nov 20 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与Java进行通信的实现方法
2013/10/21 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
基于node实现websocket协议
2016/04/25 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
基于python实现微信模板消息
2015/12/21 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python实现多线程端口扫描
2019/08/31 Python
python 实现兔子生兔子示例
2019/11/21 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
全球度假村:Club Med
2017/11/27 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
个人函授自我鉴定
2014/03/25 职场文书
植树节标语
2014/06/27 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
Redis 限流器
2022/05/15 Redis