teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明追加

2021/10/26 05:39

投稿

ppaul
ppaul

スコア24672

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
+ つまり、整数と整数の足し算の方法は左の整数が知っているけれども、整数と浮動小数点数の足し算は、左の整数がやり方を知らないので、右の浮動小数点数にできるかどうかを確かめ、右の浮動小数点数がやり方を知っていたので、計算ができる、という仕組みで動いているのです。