python mro中c3线性化算法的简单实现

c3linear的Python项目详细描述


C3线性化算法

c3linearC3 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文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何加载JNI。具有依赖项的动态库文件,但未获得未满足的链接错误?   java ResultSet元数据未返回第一行   无法从java xml解析器中的当前节点获取节点列表   java如何从for循环值创建单个数组   java如何在没有arrayList的情况下查找对象   java ItemizedOverlayWithFocus在聚焦osmdroid时显示另一个覆盖   java使用迭代器进行“向下”迭代的优雅方式   java如何使用OnListItemClick为listview和AlertDialog使用单独的arraylist?   arraylist读取txt文件Java中存储的数组   javascript IE 11与RicoLive Grid 2.2框架不兼容   java我能得到水豚的maven依赖性吗?   简单Escp Java:PrintPreviewPane在JDK7中不起作用   java取出给定字符串的一部分,并将所取部分作为变量返回?   java如何替换“instanceof”函数中的变量   来自url的Java utf8编码   java方法获取类Gregorianalendar?   安卓如何在java 7中使用AndroidStudio和DDMS监视器   java测试在JUnit4下运行,但不是在JUnit5下运行-编译干净,但执行0测试   java无法使用Azure服务总线发送消息