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