回答編集履歴
5
順序入替え
answer
CHANGED
|
@@ -2,18 +2,7 @@
|
|
|
2
2
|
さらに `x.__add__` メソッドは自分自身を第一引数にして、`ADD.__add__(x, y)` という形に変換してクラスに定義されている関数を呼び出します。
|
|
3
3
|
つまり、関数 `ADD.__add__` の引数 self には `x` が、引数 other には `y` が引き渡されることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
4
4
|
|
|
5
|
-
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(1直後のドットは浮動小数点と解釈されてしまうため空白を入れてください)
|
|
6
|
-
|
|
7
5
|
```python
|
|
8
|
-
>>> 1 + 2
|
|
9
|
-
3
|
|
10
|
-
>>> 1 .__add__(2)
|
|
11
|
-
3
|
|
12
|
-
>>> int.__add__(1, 2)
|
|
13
|
-
3
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
```python
|
|
17
6
|
>>> class ADD:
|
|
18
7
|
... def __init__(self, value):
|
|
19
8
|
... self.value = value
|
|
@@ -30,4 +19,15 @@
|
|
|
30
19
|
31
|
|
31
20
|
>>> x.value + y.value + 1
|
|
32
21
|
31
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(整数直後のドットは浮動小数点と解釈されてしまうため空白を入れています)
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
>>> 1 + 2
|
|
28
|
+
3
|
|
29
|
+
>>> 1 .__add__(2)
|
|
30
|
+
3
|
|
31
|
+
>>> int.__add__(1, 2)
|
|
32
|
+
3
|
|
33
33
|
```
|
4
実行例追加
answer
CHANGED
|
@@ -11,4 +11,23 @@
|
|
|
11
11
|
3
|
|
12
12
|
>>> int.__add__(1, 2)
|
|
13
13
|
3
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
>>> class ADD:
|
|
18
|
+
... def __init__(self, value):
|
|
19
|
+
... self.value = value
|
|
20
|
+
... def __add__(self, other):
|
|
21
|
+
... return self.value + other.value + 1
|
|
22
|
+
...
|
|
23
|
+
>>> x = ADD(10)
|
|
24
|
+
>>> y = ADD(20)
|
|
25
|
+
>>> x + y
|
|
26
|
+
31
|
|
27
|
+
>>> x.__add__(y)
|
|
28
|
+
31
|
|
29
|
+
>>> ADD.__add__(x, y)
|
|
30
|
+
31
|
|
31
|
+
>>> x.value + y.value + 1
|
|
32
|
+
31
|
|
14
33
|
```
|
3
文言修正
answer
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Pythonインタープリタは、`x + y` を `x.__add__(y)` と解釈して、変数 `x` に
|
|
1
|
+
Pythonインタープリタは、`x + y` を `x.__add__(y)` と解釈して、変数 `x` に代入されているオブジェクトの `__add__` メソッドを、変数 `y` に代入されているオブジェクトを引数にして呼び出します。
|
|
2
2
|
さらに `x.__add__` メソッドは自分自身を第一引数にして、`ADD.__add__(x, y)` という形に変換してクラスに定義されている関数を呼び出します。
|
|
3
|
-
つまり、引数 self には `x` が、引数 other には `y` が渡ることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
3
|
+
つまり、関数 `ADD.__add__` の引数 self には `x` が、引数 other には `y` が引き渡されることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
4
4
|
|
|
5
5
|
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(1直後のドットは浮動小数点と解釈されてしまうため空白を入れてください)
|
|
6
6
|
|
2
実行例追加
answer
CHANGED
|
@@ -2,4 +2,13 @@
|
|
|
2
2
|
さらに `x.__add__` メソッドは自分自身を第一引数にして、`ADD.__add__(x, y)` という形に変換してクラスに定義されている関数を呼び出します。
|
|
3
3
|
つまり、引数 self には `x` が、引数 other には `y` が渡ることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
4
4
|
|
|
5
|
-
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(1直後のドットは浮動小数点と解釈されてしまうため空白を入れてください)
|
|
5
|
+
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(1直後のドットは浮動小数点と解釈されてしまうため空白を入れてください)
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
>>> 1 + 2
|
|
9
|
+
3
|
|
10
|
+
>>> 1 .__add__(2)
|
|
11
|
+
3
|
|
12
|
+
>>> int.__add__(1, 2)
|
|
13
|
+
3
|
|
14
|
+
```
|
1
文言修正
answer
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Pythonインタープリタは、`x + y` を `x.__add__(y)` と解釈して、変数 x に格納されているオブジェクトの `__add__` メソッドを呼び出します。
|
|
1
|
+
Pythonインタープリタは、`x + y` を `x.__add__(y)` と解釈して、変数 `x` に格納されているオブジェクトの `__add__` メソッドを、変数 `y` に格納されているオブジェクトを引数にして呼び出します。
|
|
2
|
-
さらに
|
|
2
|
+
さらに `x.__add__` メソッドは自分自身を第一引数にして、`ADD.__add__(x, y)` という形に変換してクラスに定義されている関数を呼び出します。
|
|
3
|
-
つまり、引数 self には x が、引数 other には yが渡ることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
3
|
+
つまり、引数 self には `x` が、引数 other には `y` が渡ることになり、`return x.value + y.value + 1` が実行され、`return 10 + 20 + 1` となり、結果 `31` という値が返されます。
|
|
4
4
|
|
|
5
5
|
`1 + 2` も、内部的には `1 .__add__(2)` から `int.__add__(1, 2)` が呼び出されています。(1直後のドットは浮動小数点と解釈されてしまうため空白を入れてください)
|