2019年7月26日 继承顺序
python 可以继承多个类。寻找方法:深度优先,广度优先 python3 是广度优先,因为都是新式类。
广度优先:一直寻找到倒数第二层B,然后再找右侧一致寻找到最顶层A。
对于定义的每一个类,python 会计算出一个方法解析顺序(MRO)列表,MRO标示了继承顺序。
MRO准则:
1.子类会先于父类呗检查
2.多个父类回根据他们在列表中的顺序被检查
3.如果对下一个类存在两个合法的选择,选择第一个父类
class A: def test(self): print('A') class B(A): def test(self): print('B') class C(A): def test(self): print('C') class D(B): def test(self): print('D') class E(C): def test(self): print('E') class F(D,E):#先D,后E # def test(self): # print('F') pass f1=F() f1.test() print(F.mro())#MRO 继承顺序列表
》》》
D
[<class '__main__.F'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
分类:
python
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!