Python でのメソッドのオーバーロードについて理解する
Python でメソッドのオーバーロードを実装しようとすると、提供されている例にあるように、予期しない動作が発生する可能性があります。これは、Python が真のメソッドのオーバーロードをサポートしていないためです。これには、同じ名前で異なるシグネチャを持つ複数の関数の宣言が含まれます。
Python のメソッド アプローチ
Python では、次のことができます。受け取る引数の数と型に基づいて、さまざまなシナリオを処理する単一の関数を作成します。これは、次のクラス定義に示すように、デフォルトの引数値を使用することで実現されます。
class A: def stackoverflow(self, i='some_default_value'): print('only method')
この場合、stackoverflow メソッドには 1 つのデフォルト引数 i があります。メソッドが引数なしで呼び出された場合、デフォルト値「some_default_value」が使用されます。あるいは、メソッドを呼び出すときに i に特定の値を指定することもできます。
Single Dispatch Generic Functions
Python 3.4 では、singledispatch という組み込み機能が導入されました。最初の引数の型に応じてディスパッチするジェネリック関数を定義します。これにより、メソッドのオーバーロードに対するより柔軟で拡張可能なアプローチが可能になります。
singledispatch を使用するには:
from functools import singledispatch @singledispatch def fun(arg, verbose=False): # Handle the default case @fun.register(int) def _(arg, verbose=False): # Handle the integer case @fun.register(list) def _(arg, verbose=False): # Handle the list case
この例では、 fun 関数は最初の引数の型でディスパッチし、次の呼び出しを行います。その型に基づいて適切に登録された関数。
以上がPython でメソッドのオーバーロードを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。