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编写函数装饰器
Mar 18 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python探索之自定义实现线程池
Oct 27 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python微信撤回监测代码
Apr 29 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
python logging.info在终端没输出的解决
May 12 Python
使用python采集Excel表中某一格数据
May 14 Python
浅谈Python 参数与变量
Jun 20 Python
python如何控制进程或者线程的个数
Oct 16 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下载文件的详解
2013/06/02 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
python 截取 取出一部分的字符串方法
2017/03/01 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
Django框架验证码用法实例分析
2019/05/10 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
python selenium操作cookie的实现
2020/03/18 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
团结演讲稿范文
2014/05/23 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
九年级数学教学反思
2016/02/17 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python