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

时光总嘲笑我的痴心妄想 提交于 2019-11-26 14:42:14

问题


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


来源:https://stackoverflow.com/questions/13390458/why-doesnt-2-add-3-work-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!