Python では、メソッドのオーバーロードはメソッドのオーバーライドとは異なります。メソッドをオーバーロードするには、デフォルトの引数値を持つ単一関数を利用できます。
<code class="python">class A: def stackoverflow(self, i='some_default_value'): print('only method') ob = A() ob.stackoverflow(2) # prints 'only method' ob.stackoverflow() # prints 'only method' with 'some_default_value'</code>
ただし、Python 3.4 では、より包括的なメソッド オーバーロード メカニズムを提供する単一ディスパッチ汎用関数が導入されました。
<code class="python">from functools import singledispatch @singledispatch def fun(arg, verbose=False): print(arg) @fun.register(int) def _(arg, verbose=False): print(arg) @fun.register(list) def _(arg, verbose=False): for i, elem in enumerate(arg): print(i, elem)</code>
このアプローチを使用すると、単一の関数を維持しながら、特定の実装でさまざまな引数の型を処理できます。
以上がPython はメソッドのオーバーロードをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。