aby*_*byx 251 python exception
Python有一个名为的单例NotImplemented
.
为什么有人想要返回NotImplemented
而不是提出NotImplementedError
异常?难道不会让它更难找到bug,例如执行无效方法的代码吗?
Spl*_*iFF 256
这是因为__lt__()
和相关的比较方法在列表排序等中间接使用.有时算法会选择尝试其他方式或选择默认赢家.除非被捕获,否则引发异常将会破坏排序,而NotImplemented
不会被提升并可用于进一步的测试.
http://jcalderone.livejournal.com/32837.html
总结一下这个链接:
"
NotImplemented
向运行时发出信号,告诉其他人应该让其他人满足操作.在表达式中a == b
,如果a.__eq__(b)
返回NotImplemented
,那么Python会尝试b.__eq__(a)
.如果b
知道足够返回True
或者False
,那么表达式就可以成功.如果没有,那么运行时将会回归到内置行为(基于身份==
和!=
)."
Pao*_*olo 84
因为他们有不同的用例.
引用文档(Python 3.6):
应该由二进制特殊的方法被返回(例如
__eq__()
,__lt__()
,__add__()
,__rsub__()
,等等),以指示该操作不相对于实施向其他类型
[...]在用户定义的基类中,抽象方法应该在需要派生类重写方法时,或者在开发类以指示仍需要添加实际实现时引发此异常.
请参阅链接了解详细信息.
归档时间: |
|
查看次数: |
47040 次 |
最近记录: |