これは非常に簡単なはずですが、私はそれに失敗しました:どうすればPythonでparantheses演算子をオーバーロードできますか?Pythonの標準括弧( "()")のオーバーロード
my_new_object = my_new_class()
x = my_new_object(5)
これは非常に簡単なはずですが、私はそれに失敗しました:どうすればPythonでparantheses演算子をオーバーロードできますか?Pythonの標準括弧( "()")のオーバーロード
my_new_object = my_new_class()
x = my_new_object(5)
あなたのクラスに__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
あなたのクラスに__call__()
を定義します。
class MyNewClass(object):
def __call__(self, x):
return x
あなたがthis documentの "呼び出し可能なタイプ" のセクションをご覧ください。特に、あなたのクラスは__call__
を実装することができます。
演算子「オーバーロード」はありません。呼び出し可能なオブジェクトを作成しようとしていますか? –