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自动化工具日志查询分析脚本代码实现
Nov 26 Python
python实现网页链接提取的方法分享
Feb 25 Python
github配置使用指南
Nov 18 Python
Python编程中的反模式实例分析
Dec 08 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
Python中正则表达式的详细教程
Apr 30 Python
python选择排序算法实例总结
Jul 01 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python 互换字典的键值对实例
Feb 12 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python os.fork() 循环输出方法
Aug 08 Python
Python if else条件语句形式详解
Mar 24 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查看session内容的函数
2008/08/27 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
CI框架的安全性分析
2016/05/18 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
python 合并文件的具体实例
2013/08/08 Python
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
python多线程与多进程及其区别详解
2019/08/08 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
利用python实现AR教程
2019/11/20 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
办公室主任岗位职责
2013/11/08 职场文书
大学生创业策划书
2014/02/02 职场文书
广播体操口号
2014/06/18 职场文书
文体活动总结
2015/02/04 职场文书
团委工作总结2015
2015/04/02 职场文书
道士塔读书笔记
2015/06/30 职场文书
我的生日感言
2015/08/03 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书