Traffine I/O

日本語

2023-02-25

Pythonにおける__call__メソッドの解説

Pythonにおける__call__メソッドとは

__call__メソッドは、Pythonにおいてクラスのインスタンスを関数のように呼び出すことができる特別なメソッドです。クラスがcallメソッドを実装すると、そのインスタンスは呼び出し可能なオブジェクトになり、関数と同じように、括弧と引数を使用して呼び出すことができます。この強力な機能により、Pythonにおけるオブジェクト指向プログラミングの可能性を引き出すことができ、より表現力豊かで柔軟性のあるコードを作成することができます。

構文と構造

Pythonクラスで__call__メソッドを実装するには、単にクラス内に__call__という名前のメソッドを定義するだけです。このメソッドは、最初の引数としてselfを取り、それに続いて呼び出し可能なインスタンスが受け入れる追加の引数を指定します。

以下は__call__メソッドの一般的な構文です。

python
class MyClass:
    def __call__(self, arg1, arg2, ..., argN):
        # Your implementation here

__call__メソッドの基本的な例

以下は、__call__メソッドの基本的な例です。

class CallableGreeter:
    def __init__(self, greeting):
        self.greeting = greeting

    def __call__(self, name):
        return f"{self.greeting}, {name}!"

greeter = CallableGreeter("Hello")
print(greeter("Alice"))  # Output: Hello, Alice!

この例では、CallableGreeterクラスを定義して、__call__メソッドを持たせています。クラスのインスタンスを作成し、挨拶を指定すると、そのインスタンスは、名前を引数に受け取って個別化された挨拶を返す呼び出し可能なオブジェクトになります。

参考

https://medium.com/@johnidouglasmarangon/using-call-method-to-invoke-class-instance-as-a-function-f61396145567

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!