首页 > 解决方案 > Python __add__ 带有整数的魔术方法

问题描述

当我正在尝试这个时:

>>> "a".__add__("b")
'ab'

这是工作。但是这个

>>> 1.__add__(2)
SyntaxError: invalid syntax

不管用。这是有效的:

>>> 1 .__add__(2) # notice that space after 1
3

这是怎么回事?是关于变量命名规则吗?当我不使用空间时,python 是否认为我正在尝试创建变量?

标签: pythonsyntaxintaddmagic-methods

解决方案


Python 解析器故意保持简单和简单。当它看到 时1.,它认为您正处于浮点数的中间,并且1._不是有效数字(或者更准确地说,1.是有效的浮点数,并且您不能通过_:跟随值"a" __add__("b")也是错误的)。因此,任何明确表示.不是数字的一部分的内容都会有所帮助:在点之前有一个空格,正如您所发现的(因为在数字中找不到空格,Python 放弃了浮点数的概念并采用了整数语法)。括号也有帮助:(1).__add__(2). 添加另一个点也可以:(1..__add__(2)这里1.是一个有效数字,然后.__add__做通常的事情)。


推荐阅读