Why doesn't 2.__add__(3) work in Python?

int, methods, python, syntax-error

Solution

`2.` is parsed as a float, so `2.__add__` is a SyntaxError.

You can evaluate

`(2).__add__(3)` instead.

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

Problem

The integer `2` has an `__add__` method: ``` >>> "__add__" in dir(2) True ``` ... but calling it raises a SyntaxError: ``` >>> 2.__add__(3) File "<stdin>", line 1 2.__add__(3) ^ SyntaxError: invalid syntax ``` Why can't I use the `__add__` method?

Original source