__call__
という関数を見ることがあります。__init__
とは違い、見る機会はそれほど多くありませんが、覚えておくと便利なので紹介します。__call__
とは__call__
はPythonの特別な関数で、クラスのインスタンスを関数のように呼び出すことを可能にします。__call__
メソッドが定義されていると以下のように認識されます。x(arg1, arg2, ...)
# ↑は↓の省略記法として認識される
x.__call__(arg1, arg2, ...)
__call__
の使い方class Example:
def __init__(self):
print('Example object created')
def __call__(self):
print('Instance of Example class called as function')
e = Example()
e()
Example object created
Instance of Example class called as function
__init__
はExample
クラスのインスタンスが生成されるときに呼び出されます。__call__
は、インスタンスが関数として呼び出されるときに出力されていることがわかります。__call__
を使うメリット__call__
を使うメリットをいくつか紹介します。__call__
を定義することで、そのクラスのインスタンスを関数のように呼び出せます。これにより、オブジェクトの使い方がより柔軟になり、コードがより読みやすく簡潔になります。callable
callable
オブジェクトを作成できます。複数の呼び出しにわたってクラスオブジェクトに関するデータを追跡する必要がある場合に便利です。__call__
はクラスオブジェクトを再利用する際に使用を検討するべき特殊関数です。