Python有一个名为NotImplemented的单例。
为什么有人想返回NotImplemented而不是引发NotImplementedError异常?难道这不会让查找错误变得更困难,比如执行无效方法的代码吗?

最佳答案

这是因为__lt__()和相关的比较方法在列表排序等中非常常用。有时算法会选择另一种方法或选择默认的赢家。除非捕获到异常,否则引发异常将是不正常的,而NotImplemented不会被引发,可以在进一步的测试中使用。
http://jcalderone.livejournal.com/32837.html
总结这个链接:
NotImplemented向运行时发出信号,要求其他人满足该操作。在表达式a == b中,如果a.__eq__(b)返回NotImplemented,则Python将尝试b.__eq__(a)。如果b知道足够返回TrueFalse,则表达式可以成功。如果没有,那么运行时将返回到内置行为(基于==!=的标识)

09-28 09:19