Python实现带参数与不带参数的多重继承示例


Posted in Python onJanuary 30, 2018

本文实例讲述了Python实现带参数与不带参数的多重继承。分享给大家供大家参考,具体如下:

1. 不带参数的多重继承

# 作者:hhh5460
# 时间:2017.07.18
class A(object):
  def show_x(self):
    print('A')
class B(object):
  def show_y(self):
    print('B')
class C(object):
  def show_z(self):
    print('C')
class D(A, B, C):
  pass
# 测试
if __name__ == '__main__':
  d = D()
  d.show_x() # A
  d.show_y() # B
  d.show_z() # C

2. 带参数的多重继承

# 作者:hhh5460
# 时间:2017.07.18
class A(object):
  def __init__(self, x=0):
    self._x = x
  def show_x(self):
    print(self._x)
  def show_name(self):
    print('A')
class B(object):
  def __init__(self, y=0):
    self._y = y
  def show_y(self):
    print(self._y)
  def show_name(self):
    print('B')
class C(object):
  def __init__(self, z=0):
    self._z = z
  def show_z(self):
    print(self._z)
  def show_name(self):
    print('C')
# 注意下面两类D、E,都是继承A、B、C,且A类的优先级最高。但是三条__init__语句的顺序是相反的
class D(A, B, C):
  def __init__(self, x=0, y=0, z=0):
    C.__init__(self, z) # init C
    B.__init__(self, y) # init B
    A.__init__(self, x) # init A (A最优先)
class E(A, B, C):
  def __init__(self, x=0, y=0, z=0):
    super(E, self).__init__(x) # init A (A最优先) # 此句可简写成:super().__init__(x)
    super(A, self).__init__(y) # init B
    super(B, self).__init__(z) # init C
# 测试
if __name__ == '__main__':
  d = D(1,2,3)
  d.show_x()  # 1
  d.show_y()  # 2
  d.show_z()  # 3
  d.show_name() # A
  e = E(1,2,3)
  e.show_x()  # 1
  e.show_y()  # 2
  e.show_z()  # 3
  e.show_name() # A

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python处理文本文件并生成指定格式的文件
Jul 31 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
利用Python实现图书超期提醒
Aug 02 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
解决python 输出是省略号的问题
Apr 19 Python
用Python读取几十万行文本数据
Dec 24 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
Python 串口通信的实现
Sep 29 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
Python实现的随机森林算法与简单总结
Jan 30 #Python
Python决策树和随机森林算法实例详解
Jan 30 #Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 #Python
python使用Tkinter实现在线音乐播放器
Jan 30 #Python
Python字典及字典基本操作方法详解
Jan 30 #Python
Python操作MySQL数据库的三种方法总结
Jan 30 #Python
python3.5 tkinter实现页面跳转
Jan 30 #Python
You might like
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
详解python实现线程安全的单例模式
2018/03/05 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
python抖音表白程序源代码
2019/04/07 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
介绍一下JNDI的基本概念
2013/07/26 面试题
人力资源专员岗位职责
2014/01/30 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
人事科岗位职责范本
2014/03/02 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
宿舍标语大全
2014/06/19 职场文书
股指期货心得体会
2014/09/10 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL