Python NotImplemented常量

13 浏览
0 Comments

Python NotImplemented常量

浏览decimal.py,发现它在许多特殊方法中使用了NotImplemented,例如:

class A(object):
    def __lt__(self, a):
        return NotImplemented
    def __add__(self, a):
        return NotImplemented

Python文档指出

NotImplemented

特殊值,可以由“比较运算符”特殊方法(如__eq__()__lt__()等)返回,表示该比较与其他类型不兼容。

文档未涉及其他特殊方法,也未描述其行为。

它似乎是一个神奇的对象,如果从其他特殊方法中返回,则会引发TypeError;而在“比较运算符”特殊方法中则不起作用。

例如:

print A() < A()

输出True,但是

print A() + 1

会引发TypeError,因此我很好奇这是怎么回事,以及NotImplemented的用法/行为是什么。

0