Pythonでのメソッドオーバーロードの完全ガイド(例付き)
公開: 2022-04-23オーバーロードとは、関数、メソッド、または演算子が、同じパラメーターに異なるパラメーターを渡したときに異なる動作をする機能です。 Pythonでのメソッドのオーバーロードまたは関数のオーバーロードは、一般的に使用される用語です。 オーバーロードの主な利点のいくつかは、1つのメソッドを複数の方法で使用できることです。これにより、コードをクリーンに保ち、チームで作業する際の複雑さを取り除くことができます。
メソッドのオーバーロードとは何ですか?
オブジェクト指向プログラミングでは、メソッドのオーバーロードは、特定のオブジェクトについて、プロジェクトの要件に応じて特定のメソッドを複数の方法で呼び出すことができるシナリオで使用されます。
Pythonでのメソッドのオーバーロードの例については、この記事の後半で詳しく説明します。
メソッドオーバーライドとは何ですか?
Pythonでのメソッドのオーバーライドは、サブクラスとスーパークラスの間でメソッドのオーバーライドが発生することを除いて、メソッドのオーバーロードに似ています。 メソッドが呼び出されるときと同じパラメーターがあります。 ただし、一部の機能がスーパークラスからオーバーライドされるため、動作が異なります。
メソッドのオーバーライドの例
クラスX:
def method1(self):
print('私はクラスXの最初の機能です')
def method2(self):
print('私はクラスXの2番目の機能です')
クラスY(X):
def method1(self):
print('私はクラスYのクラスXの変更された最初の機能です')
def method3(self):
print('私はクラスYの機能です')
obj = Y()
obj.method1()
出力:
私はクラスYのクラスXの変更された最初の機能です
method1はクラスYによってオーバーライドされました。
upGradでオンラインでデータサイエンスコースを学ぶ
Pythonでのメソッドのオーバーロード
Pythonでのメソッドのオーバーロードの問題は、Pythonがデフォルトでそれをサポートしていないことです。 ただし、同じことを行うための回避策があります。
問題
次のコードを考えてみましょう。
def add(a、b):
s = a + b
印刷
def add(a、b、c):
s = a + b + c
印刷
#add(8、9)はエラーを示しています
add(8、9、2)
一見、コードは見栄えがしますが、2つの引数を使用して実行しようとすると、Pythonでエラーが表示されます。これは、Pythonでは、同じ名前で引数の数が異なるメソッドが複数ある場合、最新の定義済みメソッドを使用できます。
Pythonでのメソッドのオーバーロードのこの問題を克服するには、2つの異なる方法があります。
1:同じ方法を使用することは引数のデータ型によって異なります
Pythonのメソッドに可変数の引数を渡すことを可能にする*argsとともに、データ型を知るための引数を見ることができます。 次に、ifステートメントを使用して、入力に応じてメソッドがどのように動作するかを制御できます。
コード:
def add(dt、* args):
dt =='int'の場合:
s = 0
dt =='str'の場合:
s =”
引数のxの場合:
s = s + x
印刷
add('int'、11、9)
add(“ str”、“ Hello”、“お元気ですか?”)
出力:
20
こんにちは元気ですか?
これは、Pythonでメソッドのオーバーロードを実装する最初の回避策でした。
人気のデータサイエンスコースをご覧ください
IIITBのデータサイエンスのエグゼクティブ大学院プログラム | ビジネスの意思決定のためのデータサイエンスの専門資格プログラム | アリゾナ大学でデータサイエンスの理学修士号を取得 |
IIITBのデータサイエンスの高度な証明書プログラム | メリーランド大学のデータサイエンスとビジネス分析のプロフェッショナル認定プログラム | すべてのデータサイエンスコースを表示 |
2:多重ディスパッチデコレータの使用(より効率的な方法)
マルチディスパッチデコレータは回避策ではなく、想定どおりに機能します。 pip3を使用してインストールできます。
pip3は複数のディスパッチをインストールします
コード:
多重ディスパッチからインポートディスパッチ
@dispatch(int、int)#2つの整数引数の場合
def add(n1、n2):
s = n1 + n2
印刷
@dispatch(int、int、int)#3つの整数引数の場合
def add(n1、n2、n3):
s = n1 + n2 + n3
印刷
@dispatch(float、float、float)#float引数の場合
def add(n1、n2、n3):
s = n1 + n2 + n3
印刷
add(5,2)
add(6,1,4)
add(3.4,1.2,5.6)
出力:
7
11
10.2
実行時に、ディスパッチャはメソッドのさまざまな実装を格納する新しいオブジェクトを作成し、メソッドの呼び出し中に渡される引数のタイプと数に応じて、選択するメソッドを決定します。 このように、Pythonでオーバーロードする方法はより効率的です。
人気のデータサイエンス記事を読む
データサイエンスのキャリアパス:包括的なキャリアガイド | データサイエンスのキャリアの成長:仕事の未来はここにあります | データサイエンスが重要なのはなぜですか? データサイエンスがビジネスに価値をもたらす8つの方法 |
管理者にとってのデータサイエンスの関連性 | すべてのデータサイエンティストが持つべき究極のデータサイエンスチートシート | データサイエンティストになるべき6つの理由 |
データサイエンティストの1日:彼らは何をしていますか? | 神話の崩壊:データサイエンスはコーディングを必要としない | ビジネスインテリジェンスとデータサイエンス:違いは何ですか? |
結論
データサイエンスの分野に参入したい場合は、Pythonが最初の一歩として適しています。 深く掘り下げてトピックをさらに研究するために、 upGradに関連するIIIT-Bangaloreによるデータサイエンスのエグゼクティブプログラムのような高度なオンライン認定コースをチェックすることができます。 このプログラムは、主題の重要な側面をカバーし、仕事の支援、1:1メンターシップ、オンラインサポート、ライブレクチャー、さらにスキルアップしたい愛好家のためのオプションの追加モジュールなど、多くの追加のメリットを提供します。
Pythonの関数とメソッドの違いは何ですか?
Pythonには、組み込み関数とユーザー定義関数の2種類の関数があります。 print()とlen()は、組み込み関数の例です。 Pythonのユーザー定義関数は、通常のプログラムで特定のタスクを複数回実行するように自分で定義できる関数です。 メソッドは、メソッドがクラスに属し、オブジェクトに対してのみ呼び出すことができることを除いて、関数と同じです。 (構文:obj.method())
PythonとRのどちらを選択するにはどうすればよいですか?
PythonとRは、データサイエンスに使用される2つの上位言語です。 何を使用するかは、目的の会社、プロジェクトの種類、クライアントの要件などのいくつかの要因によって異なりますが、一般的に、プログラミングの初心者の場合は、大規模なアプリケーションを構築するエンジニアリング環境で作業します。Python素晴らしい選択です。 一方、プログラミングの経験があり、データ分析タスクを迅速に実行し、美しいグラフィックを使用してデータを視覚化して統計的に適切な意思決定を行いたい場合は、Rが最適です。
データサイエンスを習得するのにどのくらい時間がかかりますか?
誰もが自分の学習ペースを持っています。 ただし、プログラミングの経験がない初心者の場合、ファンダメンタルズを強化するには6〜7か月近くかかります。 それを投稿してください、それはあなたがどれだけ練習するか、そして取り組むべきプロジェクトに再び依存します。 オンライン認定を取得すると、約1年で習得できるはずです。