为什么我不能直接在int对象上调用方法?

时间:2012-10-22 12:26:46

标签: python

  

可能重复:
  accessing a python int literals methods
  Integer literal is an object in Python?

在python中,调用方法或直接在文字上查找属性是可能的,有时甚至是常见的:

>>> "-".join("abc")
'a-b-c'
>>> {1: 3, 2: 9}.pop(1)
3
>>> 3j.imag
3.0
>>> 8.0.__add__(8)
16.0

但由于某种原因,这不适用于整数对象:

>>> 3.__add__(42)
  File "<stdin>", line 1
    3.__add__(42)
            ^
SyntaxError: invalid syntax

为什么不呢?

1 个答案:

答案 0 :(得分:8)

通常情况下,当我开始输入Stack Overflow问题时,我会在我研究它时找到可能的答案。那么,今天我发布了这个问题,以及我认为的答案:

它不适用于整数,因为解析器将.解释为小数点。 float示例有效,因为解析器知道第二个句点必须是属性查找 - 在这种情况下没有歧义。