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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
python3使用matplotlib绘制条形图
Mar 25 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
Python标准库与第三方库详解
2014/07/22 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
四下基层实施方案
2014/03/28 职场文书
公司授权委托书
2014/10/17 职场文书
开学典礼观后感
2015/06/15 职场文书
2016春季运动会前导词
2015/11/25 职场文书
八年级物理教学反思
2016/02/19 职场文书
python简单验证码识别的实现过程
2021/06/20 Python
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android