しかし2系のpythonにおいては、__eq__()関数のみの定義だけでは、以下の様な「等しくないかどうか」の判定を正しく行うことができません。
比較演算子間には、暗黙的な論理関係はありません。すなわち、 が真である場合、暗黙のうちに が偽になるわけではありません。従って、 を実装する際、演算子が期待通りに動作するようにするために も定義する必要があります。
ちなみに修正前の!=判定でいずれもTrueを返戻していたのは、python2系ではデフォルトの__ne__()がTrueを返すからです。同様に、デフォルトの__eq__()はいかなる場合もFalseを返します。