Это потому, что __lt__()
и связанные методы сравнения довольно часто используются косвенно в списках и тому подобное. Иногда алгоритм может выбрать другой способ или выбрать победителя по умолчанию. Возбуждение исключения вырвалось бы из рода, если оно не было обнаружено, тогда как NotImplemented
не поднялось и может быть использовано в дальнейших тестах.
http://jcalderone.livejournal.com/32837.html
Подводя итог этой ссылке:
"NotImplemented
сообщает среде выполнения, что он должен попросить кого-то еще выполнить операцию. В выражении a == b
, если a.__eq__(b)
возвращает NotImplemented
, тогда Python пытается b.__eq__(a)
. Если b
знает Достаточно, чтобы вернуть True
или False
, тогда выражение может завершиться успешно. Если это не так, тогда среда выполнения вернется к встроенному поведению (которое основано на идентичности для ==
и !=
) . "