The integer 2 has an __add__ method:
2
__add__
>>> \"__add__\" in dir(2) True
... but calling it raises a SyntaxEr
2. is parsed as a float, so 2.__add__ is a SyntaxError.
2.
2.__add__
You can evaluate
(2).__add__(3) instead.
(2).__add__(3)
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