Просматривая decimal.py
, он использует NotImplemented
во многих специальных методах. например.
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
NotImplemented
Специальное значение, которое может быть возвращено "богатым сравнением" специальные методы (
__eq__()
,__lt__()
, и друзей), чтобы указать, что сравнение не выполняется с по отношению к другому типу.
Он не говорит о других специальных методах и не описывает поведение.
Кажется, что это волшебный объект, который, если он возвращается из других специальных методов, поднимает TypeError
, а в "богатом сравнении" специальные методы ничего не делают.
например.
print A() < A()
выводит True
, но
print A() + 1
вызывает TypeError
, поэтому мне интересно, что происходит и каково использование/поведение NotImplemented.