回答編集履歴

3

追記

2020/03/02 21:23

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- さて、この`__eq__`ですが、すべてのオブジェクトにデフォルトで存在してはいます。すべてのクラスの基底クラスである`object`クラスですでに実装されているからです。ただし、これは抽象メソッド的に置いてあるだけで、実用的に使える訳ではありません。デフォルトでは`is`比較(同一性の比較)と同等の処理のみ行います。
9
+ さて、この`__eq__`ですが、すべてのオブジェクトにデフォルトで存在してはいます。すべてのクラスの基底クラスである`object`クラスですでに実装されているからです。ただし、これは抽象メソッド的に置いてあるだけで、実用的に使える訳ではありません(念の為に:「抽象メソッド的」というのは比喩的な意味です最低限の実装は以下に述べるように存在しています)。デフォルトでは`is`比較(同一性の比較)と同等の処理のみ行います。
10
10
 
11
11
 
12
12
 

2

追記

2020/03/02 21:23

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -64,4 +64,4 @@
64
64
 
65
65
 
66
66
 
67
- やりたいことが`x.val == y.val`ならそれを`__eq__`に書いておけばいいのですが(引数の名前に変えた上で)、私の感覚ではこれはリストのコンスセルの同値性としては「緩すぎる」と感じます。なので、`==`演算子には委ねず素直に外側で`x.val == y.val`を判定するように実装するでしょう。
67
+ やりたいことが`x.val == y.val`ならそれを`__eq__`に書いておけばいいのですが(引数の名前に変えた上で)、私の感覚ではこれはリストのコンスセルの同値性としては「緩すぎる」と感じます。なので私なら、`==`演算子には委ねず素直に外側で`x.val == y.val`を判定するように実装するでしょう。

1

追記

2020/03/02 21:22

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -61,3 +61,7 @@
61
61
 
62
62
 
63
63
  コードのロジックまでは追っていないので、やりたいことと合っているかはわかりません。`val`と`next`属性が同一の`ListNode`オブジェクトは同値であるとみなすという私の信念にもとづくコードです。気に入らなければ質問者さんの責任で書き換えてください。
64
+
65
+
66
+
67
+ やりたいことが`x.val == y.val`ならそれを`__eq__`に書いておけばいいのですが(引数の名前に変えた上で)、私の感覚ではこれはリストのコンスセルの同値性としては「緩すぎる」と感じます。なので、`==`演算子には委ねず、素直に外側で`x.val == y.val`を判定するように実装するでしょう。