можливо, цей уривок із Документів може допомогти:
Це так звані методи "багатого порівняння", і вони називаються операторами порівняння, надаючи перевагу __cmp__()нижче. Відповідність між символами операторів і іменами методів виглядають наступним чином : x<yдзвінки
x.__lt__(y), x<=yдзвінки x.__le__(y),
x==yдзвінки x.__eq__(y), x!=yі x<>y
виклик x.__ne__(y), x>yвиклики
x.__gt__(y)та x>=yвиклики
x.__ge__(y).
Багатий метод порівняння може повернути синглтон, NotImplementedякщо він не реалізує операцію для заданої пари аргументів. За умовою Falseі Trueповертаються для успішного порівняння. Однак ці методи можуть повернути будь-яке значення, тому якщо оператор порівняння використовується в булевому контексті (наприклад, за умови заяви if), Python закликає bool()значення, щоб визначити, чи є результат істинним чи помилковим.
Між операторами порівняння не маються на увазі зв’язки. Істина x==yне означає, що x!=y
це помилково. Відповідно, визначаючи
__eq__(), слід також визначитись __ne__()так, що оператори будуть вести себе так, як очікувалося. У розділі __hash__()наведено деякі важливі зауваження щодо створення об'єктів, що підтримують хід, які підтримують спеціальні операції порівняння та можуть використовуватися як словники.
Немає версій цих методів з заміненим аргументом (використовуватися, коли лівий аргумент не підтримує операцію, а правий аргумент); швидше, __lt__()і __gt__()
є відображенням один одного, __le__()
і __ge__()є відображенням один одного, __eq__()і __ne__()
є їх власним відображенням.
Аргументи багатих методів порівняння ніколи не примушуються.
Це були порівняння, але, оскільки ви пов'язуєте порівняння, ви повинні знати, що:
Порівняння можуть бути пов'язані довільно, наприклад, x < y <= zеквівалентно x < y and y <= z, за винятком того, що y оцінюється лише один раз (але в обох випадках z взагалі не оцінюється, коли x <y виявляється помилковим).
Формально, якщо a, b, c, ..., y, z - це вирази, а op1, op2, ..., opN є операторами порівняння, то op1 b op2 c ... y opN z еквівалентно op1 b і b op2 c і ... y opN z, за винятком того, що кожен вираз оцінюється не більше одного разу.