[解決済み] ne__は__eq__の否定として実装されるべきか?
2022-05-15 16:53:53
質問
クラスをオーバーライドして
__eq__
メソッドをオーバーライドしたいクラスがあります。メソッドをオーバーライドするのは理にかなっているように思えます。
__ne__
メソッドもオーバーライドするのが筋のようです。私は
__ne__
の否定として
__eq__
を否定するようなものなのでしょうか?
class A:
def __init__(self, state):
self.state = state
def __eq__(self, other):
return self.state == other.state
def __ne__(self, other):
return not self.__eq__(other)
どのように解決するのですか?
はい、それは全く問題ありません。 実際には
のドキュメントでは
を定義するよう促しています。
__ne__
を定義するときに
__eq__
:
比較演算子の間に暗黙の関係はない 比較演算子間の暗黙の関係はありません。また の真偽は
x==y
が真であることを意味するわけではありません。x!=y
が偽であることを意味しない。したがって__eq__()
を定義する場合、同時に__ne__()
を定義して、演算子が期待通りに動作するようにします。
多くの場合(今回のような)単純に
__eq__
の結果を否定するのと同じくらい簡単ですが、常にそうとは限りません。
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] IPythonの終了確認を無効にする
-
[解決済み] ネストした辞書の項目からpandasのDataFrameを構築する
-
[解決済み] 関数が受け取るキーワード引数をリストアップできますか?
最新
-
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のクラスで等価性(equality)をサポートするエレガントな方法
-
[解決済み] 2つの弦をインターリーブさせる最もピトニックな方法
-
[解決済み] ネストしたdictからのPythonデータクラス
-
[解決済み] Matplotlibのレジェンドが動作しない
-
[解決済み] Google App EngineのためのFlaskとwebapp2の比較
-
[解決済み] なぜPython 3.5はPython 3.4に比べてstr.translateがずっと速いのですか?
-
[解決済み] 2つのデータフレームをマージしようとすると、ValueErrorが発生します。
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加
-
[解決済み] PythonによるCURLの代替
-
[解決済み] Pythonのモジュール命名規則