2012-11-15 12 views
13

整数2__add__方法があります:なぜPythonで2 .__ add(3)が動作しないのですか?

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

を...しかし、それを呼び出すとにSyntaxError提起:私は__add__メソッドを使用することはできませんなぜ

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

を?

+1

の間にスペースを挿入することです。これはかなり興味深いですが、私は本当にあなたが '2 + 3'の代わりにこれをしたい理由が何も見えません。 – mgilson

+4

@mgilson: '(2).__ add__'は、' lambda x:x + 2'の代わりに「add by two」関数として機能します。 – unutbu

+1

@unutbu - 興味深い。私はそれが賢明な(読みにくい?)方法だと思います...それは良い点です。私は将来それを見据えていると思うよ! – mgilson

答えて

19

2.はfloatとして解析されるため、2.__add__はSyntaxErrorです。

代わり

(2).__add__(3)を評価することができます。


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

周り2. floatとして解析されて取得するための別の方法は、このテーマの変種は、この辺りの比較的一般的な質問です2.

>>> 2 .__add__(3) 
5 
関連する問題