Python多重继承 - vip共享吧
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们


  • 个人中心
  •  我的主页
  •  我要投稿
  •  会员服务
  •  修改资料
  •  退出登录
导航菜单
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们
Python

Python多重继承

2023/8/1 韩俊  Python教程 120 0

多重继承是指一个类可以从多个基类中继承属性和方法。在Python中,我们可以使用逗号分隔不同的基类来实现多重继承,假如我们项目中需要一个鸟人的对象,这个鸟人对象就需要用到鸟人类,此时我们可以定义两个类 Human 类和 Bird 类,然后让鸟人类继承这两个类,我们的鸟人类就具有了 Human 类和 Bird 类的特征,这行为,我们叫做鸟人类多重继承 Human 类和 Bird 类。

多重继承定义

多重继承的写法需要在定义子类的括号内分别写上要继承的父类。

class Human(object):
    def __init__(self):
        pass

class Bird(object):
    def __init__(self):
        pass

class BirdHuman(Human, Bird):
    def __init__(self):
        pass

多重继承的子类拥有所有父类的所有属性和方法,这和普通重继承一样。

class Human(object):
    humanname = "human"

    def hh(self):
        print(self.humanname)

class Bird(object):
    birdname = "bird"

    def bb(self):
        print(self.birdname)

class BirdHuman(Human, Bird):
    pass

birdman = BirdHuman()
birdman.hh()
birdman.bb()
print(birdman.humanname)
print(birdman.birdname)

当我们在父类中通过构造函数定义属性的时候,多重继承和普通继承采用一样的方式(参考上一章继承和多态一节), 也就是说,我们可以通过子类把子类的对象传给父类(一般通过在子类的构造函数中调用父类的构造函数)。

class Human(object):
    def __init__(self):
        self.humanname = "human"

    def hh(self):
        print(self.humanname)

class Bird(object):
    def __init__(self):
        self.birdname = "bird"

    def bb(self):
        print(self.birdname)

class BirdHuman(Human, Bird):
    def __init__(self):
        Human.__init__(self)
        Bird.__init__(self)


birdman = BirdHuman()
birdman.hh()
birdman.bb()
print(birdman.humanname)
print(birdman.birdname)

如果多重继承的子类的多个父类中有重名的方法,则调用的是第一个继承的父类的方法。

class Human(object):
    def __init__(self):
        self.humanname = "I'm a man"
    def func(self):
        print(self.humanname)

class Bird(object):
    def __init__(self):
        self.birdname = "I'm a bird"
    def func(self):
        print(self.birdname)

class BirdHuman(Human, Bird):  # 第一个继承的父类是 Human 类
    def __init__(self):
        Human.__init__(self)
        Bird.__init__(self)

birdman = BirdHuman()
birdman.func()  # 调用的是 Human 类的 func 函数

如果多重继承的子类的多个父类中有重名的属性,调用的是到目前为止给该属性赋值的类中的属性,这个理所当然。

class Human(object):
    def __init__(self):
        self.name = "human"

class Bird(object):
    def __init__(self):
        self.name = "bird"

class BirdHuman(Human, Bird):
    def __init__(self):
        Human.__init__(self)
        Bird.__init__(self)

birdman = BirdHuman()
print(birdman.name)    # 最后一次调用的是 Bird 的构造函数,所以目前为止 name 为 bird


class BirdHumanTwo(Human, Bird):
    def __init__(self):
        Bird.__init__(self)
        Human.__init__(self)

birdmantwo = BirdHumanTwo()
print(birdmantwo.name)  # 最后一次调用的是 Human 的构造函数,所以目前为止 name 为 human

如果在我们 BirdHuman 类中,我们认为该类中含有的 Human 的功能比较多, 而 Bird 类中仅仅只是一个辅助类,里面只有很少的属性和方法, 在 Python 中这种多重继承关系,我们把 Bird 这种辅助类叫作 MixIn,我们写代码的时候要习惯于给辅助父类命名的时候加上 MixIn,当然你也可以不加上这个关键字。

class Human(object):
    def __init__(self):
        pass

class BirdMixIn(object):
    def __init__(self):
        pass

class BirdHuman(Human, BirdMixIn):
    def __init__(self):
        pass

本节重要知识点

会使用多重继承。

知道什么是MixIn。

点赞:0 分享 海报 收藏

上一篇
Python文件处理和输入输出(IO)
下一篇
Python中type和元类的用法
作者头像 作者名称 作者性别
韩俊
联系作者 作者主页

热门推荐

1 python搜索模块的路径
2 python中collections库详解
3 Python3的tuple类型
4 Python中xml文件处理
5 python文件和目录操作
6 Python中HTMLParse模块详解

评论列表

取消回复

    •  
      Login

      韩俊

      趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。

      站长 主页
      用户中心
      评论管理
      退出登陆
      • 1236文章
      • 449评论
      • 79微语
  • 广告赞助

  • 二零二三年09月
    一二三四五六日
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
  • 分类

    • 网站模板源码
    • IT技术笔记
    • 好资源分享
    • 共享网络资源
  • 最新文章

      • 小程序隐私保护指引完整填写范本
        • 微信小程序备案时遇到的一些问题
          • 迷雾通:免费科学上网的VPN软件
            • WordPress大前端主题DUX6.4版本免授权无限制版
              • 网站广告计价方式有哪些类型
                • 分析网站收录量减少的原因
                  • Nginx配置图片缓存加速,提高用户体验
                    • nginx负载均衡与正反向代理
  • 热门文章

    • 酷狗音乐VIP账号 酷狗音乐会员账号共享2017.01.29更新
    • 芒果tv vip会员账号 芒果tv会员账号共享2017.01.29更新
    • 爱奇艺vip账号 爱奇艺/PPS会员账号共享2016.12.12更新
    • 优酷/土豆vip会员账号 优酷会员账号共享2017.01.29更新
    • 活动:免费获得爱奇艺VIP/PPS会员账号50天以上的使用权!
    • 酷我音乐VIP账号 酷我音乐会员账号共享2016.12.31更新
    • 暴风影音会员账号 暴风影音会员账号共享2016.12.31更新
    • m1905会员账号 m1905会员账号共享2016.10.21更新
  • 最新评论

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=1766679359

      2345和360修改太厉害,现在都不想给...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3293901900

      感谢大大的分享

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了好奥v:如果没有解析成功,可以切换接口...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=131241242441

      现在视频解析网站怎么用不了啦?

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了全力以赴:已发送

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=471420954

      感谢大佬!麻烦您啦! 模板地址:htt...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=qleez

      感谢大佬!麻烦您啦! 模板地址:htt...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=1184503826

      回复了韩俊:万分感谢!!!

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了Moen:已发送

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了慕子訓Chester:已发送

  • 网站统计 I 当前在线:196人

    • 本站管理:1位
    • 用户总数:601位
    • 置顶文章:0篇
    • 日志总数:1236篇
    • 微语总数:79条
    • 评论总数:449条
    • 标签总数:82条
    • 页面总数:9页
    • 分类总数:14个
    • 链接总数:41条
    • 运行天数:3066天
    • 最后更新:9月19日
    • 登录
    • 注册
    • 找回
    Copyright © 2023vip共享吧网站地图 网站备案豫ICP备19004194号-1

    免责声明:本站资源仅供用于学习和交流,本站部分素材内容来源于网络,如有侵权/投稿等,请及时联系站长.

    • 首页
    • 秒懂百科 秒懂百科
    • 搜索
    • 史上今日
    • 用户

    大家都在搜

    • 腾讯视频会员账号
    • 网站源码
    • 芒果视频
    • 掌阅vip账号共享
    • 手机赚钱软件
    • 网赚
    • 土豆vip账号
    • seo优化
    • 优酷vip账号共享
    • 搜狐视频会员账号
    • 网赚网盘
    • 酷狗VIP账号
    • 开发工具
    • 2345网址导航
    • 阴阳师
    • 咪咕会员账号
    • 
    • 