クラスの特殊メソッド クラスオブジェクトを関数化する __call__
Pythonのクラスにおいて、クラスのオブジェクトを関数のように呼び出すための特殊メソッドとして、__call__ メソッドを定義できます。このメソッドを実装することで、クラスのインスタンスを関数のように呼び出すことができます。これは、オブジェクトに関数のような振る舞いを追加するために使用されます。
__call__ メソッドを実装すると、インスタンスを関数として呼び出すことができ、オブジェクトが関数として振る舞う方法を定義できます。__call__ メソッドは引数を受け取り、任意の操作を行うことができます。
以下は、__call__ メソッドを使ってクラスのオブジェクトを関数のように呼び出す例です:
python
class MyCallable: def __init__(self): self.count = 0 def __call__(self, x): self.count += 1 return x * 2 # インスタンスを作成 my_callable = MyCallable() # インスタンスを関数のように呼び出す result1 = my_callable(5) result2 = my_callable(10) print(result1) # 結果: 10 print(result2) # 結果: 20 print(my_callable.count) # 結果: 2
この例では、MyCallable クラス内に __call__ メソッドが定義されており、このメソッドは引数 x を受け取り、それを2倍にして返します。インスタンス my_callable を関数のように呼び出すと、__call__ メソッドが実行されて関数の結果が得られます。また、__call__ メソッド内でカウンターがインクリメントされています。
__call__ メソッドを使用すると、クラスのオブジェクトを関数のように使用でき、関数の振る舞いをカスタマイズできます。これは、オブジェクトに状態を持たせながら関数の操作を行いたい場合や、クラスをコール可能(callable)にしたい場合に便利です。

ディスカッション
コメント一覧
まだ、コメントがありません