type
status
date
slug
summary
tags
category
icon
password
📝 三大特性—继承补充
1、MRO
1.1、相关概念
MRO 的全称是 Method Resolution Order,即方法解析顺序。
当你在一个对象上调用一个方法(例如
obj.method()
) 时,Python 需要沿着继承链向上搜索,以确定应该调用哪个类中的方法。这个搜索的顺序就是 MRO。对于简单的单继承,这非常直观:从子类到父类,一路向上。
1.2、核心问题
多重继承的歧义 当引入多重继承后,继承图不再是简单的“链”,而可能是一个复杂的“图”,甚至是一个“菱形”。这就产生了歧义:应该以何种顺序搜索父类?
在这个经典的“菱形继承”问题中,搜索顺序可以是:
D -> B -> A -> C -> A
(深度优先,但重复访问 A 是糟糕的)
D -> B -> C -> A
(广度优先)
- 或者其他顺序…
2、C3 算法详解
C3 算法的核心是为一个类生成一个线性化(MRO 列表),这个线性化需要满足以下两个关键约束:
🤗 总结归纳
总结文章的内容
📎 参考文章
- 一些引用
- 引用文章