为什么返回NotImplemented而不是提升NotImplementedError

问题:

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,则表达式可以成功。如果没有,则运行时将回到内置行为(基于==!=的身份)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why return NotImplemented instead of raising NotImplementedError

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

10 + = 16