ホームページ  >  記事  >  バックエンド開発  >  Python で __call__() 関数を使用してオブジェクトを呼び出し可能にする方法

Python で __call__() 関数を使用してオブジェクトを呼び出し可能にする方法

WBOY
WBOYオリジナル
2023-08-22 10:36:261241ブラウズ

Python で __call__() 関数を使用してオブジェクトを呼び出し可能にする方法

Python の __call__() 関数は、オブジェクトを関数のように呼び出すことができる特別なメソッドです。オブジェクトが呼び出されると、Python は自動的にオブジェクトの __call__() メソッドを見つけて呼び出します。

__call__() メソッドを使用して、クラスのインスタンスを関数として使用できるかどうかとその動作を定義できます。 __call__() メソッドを実装することで、オブジェクトの呼び出し動作をカスタマイズできます。

これは、Python で __call__() 関数を使用してオブジェクトを呼び出し可能にする方法を示す簡単な例です。

class Counter:
    def __init__(self):
        self.count = 0
        
    def __call__(self):
        self.count += 1
        print("调用次数:", self.count)
        
# 创建一个Counter对象
counter = Counter()

# 调用对象,会触发__call__()方法
counter()  # 输出:调用次数: 1
counter()  # 输出:调用次数: 2
counter()  # 输出:调用次数: 3

上記のコードでは、Counter クラスを定義します。インスタンス変数 count と __call__() メソッド。 __call__() メソッドでは、count を 1 ずつインクリメントし、呼び出し数を出力します。

Counter オブジェクトを作成して呼び出すと、__call__() メソッドが呼び出されるたびにカウンターがインクリメントされ、呼び出し回数が出力されることがわかります。

上記の例に加えて、__call__() 関数をさらに活用することもできます。たとえば、クラス内に複数の __call__() メソッドを定義して、さまざまな呼び出し動作を実現できます。

class Adder:
    def __init__(self, a):
        self.a = a
        
    def __call__(self, b):
        return self.a + b

# 创建一个Adder对象
adder = Adder(5)

# 调用对象,会在__call__()方法中执行相应的操作
result = adder(10)
print(result)  # 输出:15

result = adder(20)
print(result)  # 输出:25

上記のコードでは、__call__() メソッドを含む Adder クラスを定義します。 __call__() メソッドでは、2 つの数値を加算する演算を実装します。

Adder オブジェクトを作成し、それを関数として呼び出すと、対応する合計結果を取得できます。

つまり、Python の __call__() 関数を使用すると、オブジェクトを関数のように呼び出すことができます。 __call__() メソッドを実装することで、オブジェクトの呼び出し動作をカスタマイズし、より豊富な関数を実装できます。これは、Python のオブジェクト指向プログラミングの強力な機能です。

以上がPython で __call__() 関数を使用してオブジェクトを呼び出し可能にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。