2012-11-15 53 views
13

整數2有一個__add__方法:爲什麼2 .__添加__(3)在Python中工作?

>>> "__add__" in dir(2) 
True 

...但調用它提出了一個語法錯誤:

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

爲什麼我不能用__add__方法?

+1

之間的空間這一主題變體是比較常見的問題在這裏。這很有趣,但我真的不明白爲什麼你會想這樣做,而不是'2 + 3'。 – mgilson

+4

@mgilson:'(2).__ add__'可以用作「add by two」函數,而不是'lambda x:x + 2'。 – unutbu

+1

@unutbu - 有趣的。我認爲這將是一個聰明(不太容易閱讀?)的方式...這是一個很好的觀點。我想我會在將來尋找它! – mgilson

回答

19

2.被解析爲浮點數,因此2.__add__是SyntaxError。

您可以評估

(2).__add__(3)代替。


In [254]: (2).__add__(3) 
Out[254]: 5 
4

用以避開2.被解析爲一個浮動的另一種方法是插入2.

>>> 2 .__add__(3) 
5 
相關問題