Почему 2.__ добавить __ (3) работать в Python?

Целое число 2 имеет метод __add__:

>>> "__add__" in dir(2)
True

... но вызов вызывает синтаксисError:

>>> 2.__add__(3)
  File "<stdin>", line 1
    2.__add__(3)
            ^
SyntaxError: invalid syntax

Почему я не могу использовать метод __add__?

Ответ 1

2. анализируется как float, поэтому 2.__add__ - это SyntaxError.

Вы можете оценить

(2).__add__(3).


In [254]: (2).__add__(3)
Out[254]: 5

Ответ 2

Другой способ обойти 2., который обрабатывается как float, - это вставить пробел между 2 и .

>>> 2 .__add__(3)
5