今日私はquestionに質問しました。これは、豊富な比較メソッドを使用した比較演算子の実装を実際に理解できなかったためです。両者の違いをよく説明してくれてありがとうございました。なぜOrderedDictは比較演算子を実装していません
基本的に、私が理解したところでは、Python 3は__cmp__()
の魔法の使用を中止しました。オペランドは意味のある自然順序付けを持っていないとき
、今から注文比較演算子は(<、< =、> =、>)はTypeError 例外を発生させます。
したがって、私はOrderedDict
が有効であると考えました。しかし、私の驚いたことに、
なぜ、OrderedDict
は比較演算子を実装していないのですか?
リンクされた質問の回答のコメントでは、トピックについて話を始めました。下線が引かれているものの1つはです。なぜあなたは物事を比較したいのですか?独自の方法を実装して明示的に比較することができます。
はなぜ(でもPythonの3)、
list1 = [1,2,3]
list2 = [4,5,6]
>>> list1 < list2
True
は似たような状況ではないですか?
でenhancment要求をsupmitしてください?むしろ自然であると主張できますか? –
@PaulPanzer:私は自分の答えを拡張するかもしれませんが、要点はOrderedDictの使用例とは無関係で、Python 2の通常のdictsとの互換性を混乱させてしまいます(そして自動性のある '=='は十分に悪いです)。初期のPythonの "すべてのものを比較する"というアプローチは吸うことが判明しましたが、私は彼らが強い正当性なしに比較演算子を投げたいとは思っていませんでした。 – user2357112