Python (十五) 面向对象之多继承问题


程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


多继承存在继承问题,先看如下代码问题

class Person:def talent(self, sport):self.sport = sportprint(self.name, '正在'+sport)class PersonA(Person):passclass PersonB(Person):def talent(self, sport):self.sport = sportprint(self.name, '正在全力以赴:'+sport)    #多继承,继承Person、PersonB
class PersonC(Person,PersonB):pass   

报错:

如下代码则不会有问题:

#多继承
class PersonC(PersonA,PersonB,Person):pass

是因为Python多继承需要遵循Python MRO机制,那何为MRO呢?

MRO即方法解析顺序(method resolution order),用于判断子类调用的属性来自于哪个父类。

调用MRO方法:

class PersonC(PersonA,PersonB,Person):passprint(PersonC.mro())

输出:

[<class '__main__.PersonC'>, <class '__main__.PersonA'>, <class '__main__.PersonB'>, <class '__main__.Person'>, <class 'object'>]

PersonC的访问顺序(即从左往右)是PersonA、PersonB,

由于Person顶点是交叉点,应当留到最后来访问(懒惰)。

因此mro是PersonC ——> PersonA ——> PersonB ——> Person。

总结

  • 遍历:遍历继承图,不能遗漏,不能重复。
  • 从左往右:本地顺序。
  • 从下往上:单调往上走


 系列文章索引

MyBatis的插件能在哪些地方进行拦截?

了解MyBatis的缓存机制吗

面试官:谈谈对volatile的理解

Spring中用到了哪些设计模式

面试官:说一下SQL的执行过程

线程池的工作原理


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI数字人-论文】Wav2lip论文解读

文章目录 Wav2lip前言Lip-sync Expert DiscriminatorGeneratorvisual quality discriminator生成器总损失函数 论文 Wav2lip 前言 Wav2Lip 是第一个通用说话者的模型&#xff0c;可生成与真实同步视频相匹配的口型同步精度的视频&#xff0c;它的核心架构概括为“通过向训练有…

CLIPTokenizer.from_pretrained本地加载

以"openai/clip-vit-large-patch14"为例&#xff0c;原代码为&#xff1a; self.tokenizer CLIPTokenizer.from_pretrained(“openai/clip-vit-large-patch14”) self.transformer CLIPTextModel.from_pretrained(“openai/clip-vit-large-patch14”) 但我连不到外…

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用

一、CNN简介 1. 神经网络基础 输入层&#xff08;Input layer&#xff09;&#xff0c;众多神经元&#xff08;Neuron&#xff09;接受大量非线形输入讯息。输入的讯息称为输入向量。 输出层&#xff08;Output layer&#xff09;&#xff0c;讯息在神经元链接中传输、分析、权…

VUE2中使用阿里云播放器AliPlayer

简述 基于 Vue 的播放器单页应用, 利用 web 播放器 sdk 进行视频点播&#xff0c;包含播放列表、字幕、多语言、自适应码率&#xff0c;皮肤自定义等功能 Web播放器文档 已知问题 vue中使用截图&#xff0c;不太好使【已自行优化】无键盘快捷键&#xff0c;无法通过空格暂停…

DCGAN 使用指南:将卷积神经网络和对抗网络结合,适用于生成小尺寸的图像

DCGAN 使用指南&#xff1a;将卷积神经网络和对抗网络结合 网络结构细节设计 论文地址&#xff1a;https://arxiv.org/abs/1511.06434 项目代码&#xff1a;https://github.com/tensorlayer/DCGAN.git DCGAN 适用于生成小尺寸的图像&#xff0c;并且具有简单易用的优势 Styl…

“2024上海智博会、2024北京智博会”双展联动,3月上海,6月北京

“2024上海智博会、2024北京智博会”双展联动&#xff0c;将分别于3月和6月在上海和北京举办。这两个展会旨在充分展示智慧城市、人工智能、物联网、大数据、软件等新兴行业的最新产品和技术。 作为中国最具影响力和创新力的智能科技展会&#xff0c;上海智博会和北京智博会吸引…

bclinux aarch64 ceph 14.2.10 云主机 性能对比FastCFS vdbench

部署参考 ceph-deploy bclinux aarch64 ceph 14.2.10-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph 14.2.10 aarch64 非集群内 客户端 挂载块设备-CSDN博客 FastCFS vdbench数据参考 bclinux aarch64 openeuler 20.03 …

Vue 中修改了计算属性(computed) 或者它的依赖变量,计算属性的值没有变化的几种情况

目录 第一种情况&#xff1a;直接修改计算属性 不生效举例 解决方案1&#xff1a;直接修改依赖变量 解决方案2&#xff1a;为计算属性设置 set 方法 第二种情况&#xff1a;直接修改依赖数据 不生效举例 解决方案 第一种情况&#xff1a;直接修改计算属性 在Vue中&#x…

Java LeetCode篇-深入了解关于单链表的经典解法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 移除链表元素 1.1 使用双指针方法 2.0 反转链表 2.1 递归法 2.2 头插法 3.0 链表中倒数第 k 个节点 3.1 递归法 3.2 快慢指针 4.0 合并两个有序链表 4.1 递归法 …

中小型项目 生成环境 JVM调优示例,详细参数解释

生成环境 jvm调优示例,详细参数解释 配置环境硬件条件:软件条件:JVM调优内存分配率调优:垃圾收集器选择和配置:线程数调优:调优工具和监控:总结配置详细列表配置脚本配置环境 硬件条件: 内存:8GB,系统需要至少4GB的可用内存来支持配置中设置的堆大小。处理器:8核,…

尝试用C++从实现一个可用的内存池

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 基本实现增加内存对齐、无锁设计用C++实现一个高并发内存池是一个复杂的任务,涉及深入理解内存分配、并发控制、锁机制、以及系统的内存管理策略。此外,这通常需要与操作系统…

【Vue3】源码解析-响应式原理

【Vue3】源码解析 系列文章Proxy APIProxy和响应式对象reactiveref()方法运行原理 系列文章 【Vue3】源码解析-前置 【Vue3】源码解析-响应式原理 【Vue3】源码解析-虚拟DOM Proxy API 见上 Proxy和响应式对象reactive 在Vue 3中&#xff0c;使用响应式对象方法如下代码所…

【每日一题】1670. 设计前中后队列-2023.11.28

题目&#xff1a; 1670. 设计前中后队列 请你设计一个队列&#xff0c;支持在前&#xff0c;中&#xff0c;后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类&#xff1a; FrontMiddleBack() 初始化队列。void pushFront(int val) 将 val 添加到队列的 最前面…

如何通过“闻香”给葡萄酒分类?

有句话叫做“闻香识女人”&#xff0c;葡萄酒也如同美女&#xff0c;千娇百媚风情万种&#xff0c;所以通过“闻香”也可以给葡萄酒进行分类。 那么&#xff0c;云仓酒庄的品牌雷盛红酒分享葡萄酒都有哪些不同的香呢&#xff1f; 云仓酒庄是云仓酒庄的结合&#xff0c;也就是在…

计算机网络(超详解!) 第二节 物理层(上)

1.物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。 用于物理层的协议也常称为物理层规程(procedure)。 2.物理层的主要任务 主要…

vivado产生报告阅读分析21

其他命令选项 • -of_objects <suggestion objects> &#xff1a; 启用特定建议的报告。在此模式下运行时 &#xff0c; report_qor_suggestions 不会生成新建议。此命令可快速执行 &#xff0c; 读取 RQS 文件后 &#xff0c; 此命令可用于查看其中包 含的建议。其…

Linux下各种字符编码进行转码

支持各种编码相互转换 具体 iconv --list 可以查看 支持的转码格式 1.代码实现 #include <iostream> #include <iconv.h> #include <cstring>int iconv_convert(const char *inCharset, const char *outCharset, char *inbuf, unsigned int inlen, char *o…

流程控制翻转学习

&#x1f4d1;前言 本文主要是【Python】——Python流程控制翻转学习的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每…

Leetcode49.字母异位词分组

忘了之前做哪家笔试题遇到过这个题&#xff0c;对哈希表一点印象都没有了&#xff0c;完全懵逼&#xff0c;虽然写出来自己感觉正确的代码了&#xff0c;但是代码太厚重了而且运行还出错了。今天正好在leetcode看见了写一下题解记录一下吧~ 题目描述 给你一个字符串数组&…

OSHI-操作系统和硬件信息库

文章目录 引言一、快速入门1.1 OSHI的简介1.2 引入依赖1.3 涉及的包&#xff08;package&#xff09;1.4 涉及的核心类 二、操作系统信息&#xff1a;OperatingSystem2.1 总揽2.2 文件系统信息&#xff1a;FileSystem2.3 网络参数信息&#xff1a;NetworkParams2.4 进程信息&am…