Pythonシンタックス __call__
A()(a, b)
初見、A()
の戻り値とタプル(a, b)
の積かなと思ったが、積演算子がない。
A()
の引数を外側受け取る記述?そんなのあったっけ?と脳内検索。
A
のクラス定義みると __init__
, __repr__
, __call__
の特殊メソッドの実装のみ。
__init__
もしくは、__call__
になるかな。
__call__
メソッドあまり使ったことないのでググると、
クラスのインスタンス Instances of arbitrary classes can be made callable by defining a call() method in their class.
3. データモデル — Python 3.10.6 ドキュメント
インスタンスがcallableになる。
なので、
A()(a, b)
は、以下を端折った記法のようでした。
a = A() a(a, b) # __call__ が呼び出される