python mro中c3线性化算法的简单实现
c3linear的Python项目详细描述
C3线性化算法
c3linear
是
C3 linearization
算法。c3在python 2.3+中用于
Method Resolution Order。
看雷蒙德·赫廷格的
Python’s super() considered super!
更多信息。
动机
该项目已成为调试 过复杂的Mixin类的层次结构。我以为我知道 准确地说,mro是计算出来的,但事实证明我没有。
我试图使代码保持习惯性,并且易于在 演出费用。这个项目真的花了几个小时 完成。虽然我不关心时间的复杂性,但没有 尽可能彻底地检查正确性,我认为这个项目可能 帮助那些想了解python方法解析顺序的人 作品。
用法
库
- 获取代码并用
python setup.py install
(python)安装 3.6+必需) - 导入
from c3linear.mro import mro
- 检查内置MRO:
>>>classA:pass>>>classB(A):pass>>>mro(B)==B.mro()True
查看tests
以获取更多示例。
测试
- 安装依赖项:
pip install -e .
- (可选)安装额外的软件包:
pip install -e .[extra]
- 使用以下命令运行测试:
python setup.py test
- 运行
flake8
进行PEP8符合性测试:
python setup.py flake8
- 运行
mypy
:
mypy c3linear/
贡献
如果您发现了一个bug,请先打开一个描述该问题的问题。
许可证
这个项目是根据麻省理工学院的许可证授权的。有关详细信息,请参见
LINCENSE
文件。