回答編集履歴
1
説明追加
answer
CHANGED
@@ -6,4 +6,6 @@
|
|
6
6
|
|
7
7
|
例えばnumpyには numpy.int32というクラスがあります。これを扱うために、基本のPythonのint型の```__add__```にnumpy.int32のことを追加しなければならないのであれば、追加モジュールが作成されるごとに基本のPythonのint型の```__add__```の変更が必要となり、モジュールの追加がとても難しくなります。
|
8
8
|
|
9
|
-
そうならないように、```x + y``` はまず、```x.__add__(y)```を試してみます。それが成功すればその結果を返しますが、失敗した場合は```y.__radd__(x)```を試します。それが成功すればその結果を返します。両方とも失敗した場合には、TypeErrorの例外を上げます。
|
9
|
+
そうならないように、```x + y``` はまず、```x.__add__(y)```を試してみます。それが成功すればその結果を返しますが、失敗した場合は```y.__radd__(x)```を試します。それが成功すればその結果を返します。両方とも失敗した場合には、TypeErrorの例外を上げます。
|
10
|
+
|
11
|
+
つまり、整数と整数の足し算の方法は左の整数が知っているけれども、整数と浮動小数点数の足し算は、左の整数がやり方を知らないので、右の浮動小数点数にできるかどうかを確かめ、右の浮動小数点数がやり方を知っていたので、計算ができる、という仕組みで動いているのです。
|