2011-10-17 7 views
1

Pythonで整数の追加オブジェクト(operator +)を取得してどこかに格納する方法はありますか?整数の追加オブジェクトを取得するにはどうすればよいですか?

>>> from operator import add 
>>> add(1, 2) 
3 
>>> add('a', 'b') 
'ab' 

あなたが特定の整数の加算方法を取得したい場合は、代わりにintタイプで、gnibblerのを参照してください:あなたはまた、Pythonで追加するための汎用的な機能を得るためにoperator.addを使用することができます

+3

*答えは、あなたが、具体的整数の加算演算子*をしたいかに応じて異なることに注意してくださいまたは一般的な操作です。 – wberry

+1

整数のバインドされたaddメソッドを得るには、小数点として扱われる '.'を防ぐために括弧を使うべきです。例えば ​​'(1).__ add__'などです。もう1つの方法は、 '1'と' .__ add__'のような '.'の間にスペースを入れることですが、あまりにもあいまいです。 –

+0

@gnibbler素晴らしいコメント。私は完全な答えのためにそれに基づいて受け入れられた答えを拡大しました。 – agf

答えて

7
>>> int_add = int.__add__ 
>>> int_add(1, 2) 
3 

質問へのコメント:

整数のバウンドメソッドを追加するには、括弧を使用してください。小数点として扱われます。例:(1).__add__。もう一つの方法は、1.例えば1 .__add__の間にスペースを追加することですが、私はそれがあまりにもあいまいだと思います。

例:

>>> one_add = 1 .__add__ 
>>> one_add(2) 
3 
+0

これはもっと正しいです。少なくともいくつかのPythonバージョンでは、 'int .__ add__ is operator.add'はfalseです。 – wberry

+0

'operator.add'が最初の引数として整数で呼び出されると、' int .__ add__'が使用されます。 'operator.add(a、b)'に対して、 'a .__ add __(b)'が実装されていれば呼び出され、 'b .__ radd __(a)'が試みられなければ呼び出されます。 –

+0

F.Jへの追加:非整数の引数で呼び出されたとき、 'int .__ add__'は失敗します。' int .__ add __(2、3.0) 'は文字列値' 'NotImplemented" 'を返します。引数が常に整数であることが確実であれば、 'int .__ add__'を使用してください。 –

4
>>> import operator 
>>> help(operator.add) 
Help on built-in function add in module operator: 

add(...) 
    add(a, b) -- Same as a + b. 
0

あなたはint.__add__を使用することができます。

>>> myOperator = int.__add__ 
>>> myOperator(23,42) 
65 
関連する問題