在创建基类时常常会用到raise NotImplementedError
这个语句, 但在写下这条语句时IDE可能会补全一个NotImplemented
出来, NotImplemented是什么?
NotImplemented是什么
首先NotImplemented并不是一种异常, 而是Built-in的一种类型:
|
|
官方文档中是这么描述的:
Special value which can be returned by the “rich comparison” special methods (__eq__(), __lt__(), and friends), to indicate that the comparison is not implemented with respect to the other type.
NotImplemented的具体应用
根据文档描述, NotImplemented常用在object.__eq__这样的比较方法中。
在下面的例子中, 比较Pants和Socks对象时, 首先会调用Pants的__eq__方法, 返回的是NotImplemented
则转而调用Socks的__eq__方法。
使用NotImplemented而不是抛出异常, 给了其它对象扩展的机会。
|
|
文末留一个小问题:
|
|
Foo() < Foo()
有输出吗? 如果有, 是什么?