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

2019-01-15 12:57发布

问题:

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?

回答1:

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


回答2:

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