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

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

Another way to get around 2. being parsed as a float is to insert a space between the 2 and the .

>>> 2 .__add__(3)
5