2016-01-23 42 views
4

這不起作用。爲什麼在整數週圍需要括號來調用它的方法?

>>> 10.__str__() 
    File "<stdin>", line 1 
    10.__str__() 
      ^
SyntaxError: invalid syntax 

但這個工程。

>>> (10).__str__() 
'10' 

爲什麼爲了調用其方法需要在整數左右的括號?列表或其他數據類型似乎並不需要它。

>>> [1, 2].__str__() 
'[1, 2]' 
>>> {'a': 'foo'}.__str__() 
"{'a': 'foo'}" 

回答

7

python documentation,數字文本需要括號,否則它是不明的,如果.是表示一個浮點數或方法調用。

例如,爲了調用上的整數的方法:

(10).__str__() 

但不

10.__str__() 

而調用方法上的浮點數:

(10.).__str__() 

10..__str__() 

都可以工作,因爲第一個.只能是浮點指示符,因爲它後跟調用該方法的.

+1

非常有趣:'10 ..__ str __()'。 – Chris

+1

@Chris:因爲'10.'給出了10.0,這是一個浮動對象。所以'10 ..__ str __()== 10.0 .__ str __()'。 –

+1

@KevinGuan,是的,我打算以此爲例,而不是要求澄清。 – Chris

相關問題