[解決済み] Pythonのユーザー定義クラスをソート、ハッシュ可能なものにする
2022-10-15 17:52:51
質問
Pythonでユーザー定義クラスをソート可能、ハッシュ可能にする場合、どのようなメソッドをオーバーライド/実装する必要がありますか?
気をつけるべきことは何ですか?
私が入力する
dir({})
と入力すると、組み込みディクショナリに対するメソッドのリストが表示されます。 これらのうち、私はいくつかのサブセットを実装する必要があると仮定します。
['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__']
Python3とPython2では、実装しなければならないメソッドに違いはありますか?
どのように解決するのですか?
私はほとんど他の回答へのコメントとしてこれを投稿しましたが、それは本当にそれ自体で答えになっています。
アイテムをソート可能にするために、彼らはただ実装する必要があります
__lt__
. これは内蔵のソートで使用される唯一のメソッドです。
他の比較や
functools.total_ordering
は、実際にクラスで比較演算子を使いたい場合のみ必要です。
アイテムをハッシュ化するために
__hash__
を実装します。を実装する必要があります。
__eq__
を互換性のある方法で実装する必要があります -- 等価なアイテムは同じハッシュを持つべきです。
関連
-
[解決済み】Pythonのロガーがログファイルに加えて標準出力にも全メッセージを出力するようにする。
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] Pythonにおける抽象クラスとインターフェースの違い
-
[解決済み】Pythonの "hashable "の意味は?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Pythonの文字列書式をリストで使う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例