小编典典

为什么返回 NotImplemented 而不是引发 NotImplementedError

all

Python
有一个名为NotImplemented.

为什么有人想要返回NotImplemented而不是引发NotImplementedError异常?会不会让查找错误变得更加困难,例如执行无效方法的代码?


阅读 112

收藏
2022-03-30

共1个答案

小编典典

这是因为__lt__()相关的比较方法在列表排序等中非常常用。有时算法会选择尝试另一种方式或选择默认的获胜者。除非被捕获,否则引发异常将打破排序,而NotImplemented不会引发异常并且可以在进一步的测试中使用。

http://jcalderone.livejournal.com/32837.html

总结该链接:

NotImplemented向运行时发出信号,它应该要求其他人来满足操作。在表达式a == b中,如果a.__eq__(b)返回NotImplemented,则 Python
尝试b.__eq__(a)。如果b知道足够的返回TrueFalse,则表达式可以成功。如果没有,那么运行时将回退到内置行为(基于 和
的身份==!=。”

2022-03-30