Python 有一个名为NotImplemented.
NotImplemented
为什么有人想要返回NotImplemented而不是引发NotImplementedError异常?会不会让查找错误变得更加困难,例如执行无效方法的代码?
NotImplementedError
这是因为__lt__()相关的比较方法在列表排序等中非常常用。有时算法会选择尝试另一种方式或选择默认的获胜者。除非被捕获,否则引发异常将打破排序,而NotImplemented不会引发异常并且可以在进一步的测试中使用。
__lt__()
http://jcalderone.livejournal.com/32837.html
总结该链接:
“NotImplemented向运行时发出信号,它应该要求其他人来满足操作。在表达式a == b中,如果a.__eq__(b)返回NotImplemented,则 Python 尝试b.__eq__(a)。如果b知道足够的返回True或False,则表达式可以成功。如果没有,那么运行时将回退到内置行为(基于 和 的身份==)!=。”
a == b
a.__eq__(b)
b.__eq__(a)
b
True
False
==
!=