__lt__() and related comparison methods is quite commonly used indirectly in list sorts and such. Sometimes the algorithm will choose to try another way or pick a default winner. Raising an exception would break out of the sort unless caught, whereas
NotImplemented doesn't get raised and can be used in further tests.
To summarise that link:
NotImplementedsignals to the runtime that it should ask someone else to satisfy the operation. In the expression
a == b, if
NotImplemented, then Python tries
bknows enough to return
False, then the expression can succeed. If it doesn't, then the runtime will fall back to the built-in behavior (which is based on identity for