2013-03-30 11 views
25

私はクラスのためにPythonでカリングを学習しようとしています。そのために()演算子をオーバーロードする必要があります。しかし、私はどのように私は()演算子のオーバーロードに行くことができるか分かりません。あなたは括弧のオーバーロードの背後にある論理を説明できますか?最初に過負荷にする必要がありますか?また、かっこ演算子の特別な名前はありますか?PythonのOverload()演算子

+3

を(http://docs.python.org/2/reference/datamodel.html#emulating-callable-オブジェクト) – soon

答えて

30

あなたは__call__メソッド実装することで、オブジェクトが呼び出し可能にすることができます。[呼び出し可能オブジェクトをエミュレート]

class FunctionLike(object): 
    def __call__(self, a): 
     print "I got called with %r!" % (a,) 

fn = FunctionLike() 
fn(10) 

# --> I got called with 10! 
+1

追加などの呼び出し可能オブジェクトで基本操作を行うことはできますか? – jdyg

+1

ほとんどすべての言語操作を提供できます:http://docs.python.org/2/reference/datamodel.html#special-method-names –

+0

'()'は本質的に問題のオブジェクトを呼び出す呼び出し演算子ですある種の議論(またはその不在)? – MadPhysicist