2012-02-09 3 views
2

これは非常に簡単なはずですが、私はそれに失敗しました:どうすればPythonでparantheses演算子をオーバーロードできますか?Pythonの標準括弧( "()")のオーバーロード

my_new_object = my_new_class() 
x = my_new_object(5) 
+4

演算子「オーバーロード」はありません。呼び出し可能なオブジェクトを作成しようとしていますか? –

答えて

12

あなたのクラスに__call__を定義する必要があります。例えば

>>> class Multiplier(object): 
... def __init__(self, num): 
...  self.num = num 
... def __call__(self, other): 
...  return self.num*other 
... 
>>> mul5 = Multiplier(5) 
>>> mul5(6) 
30 
8

あなたのクラスに__call__()を定義します。

class MyNewClass(object): 
    def __call__(self, x): 
     return x 
5

あなたがthis documentの "呼び出し可能なタイプ" のセクションをご覧ください。特に、あなたのクラスは__call__を実装することができます。

関連する問題