logo

Python のダックタイピングとは何ですか?

このチュートリアルでは、ダックタイピングについて学びます。これは Python でよく使われる用語で、次のような言葉から来ています。 「アヒルのように歩き、アヒルのように泳ぎ、アヒルのように見えるなら、それはおそらくアヒルであるはずです。」

上記のステートメントは、アヒルを識別するためのアイデアを与えます。ここではアヒルのゲノム配列は必要ありません。私たちはその動作と外観から結論を導き出します。

Python プログラミングにおけるダックタイピングの正確な意味について説明します。

Python は次のとおりです EAFP (許可よりも許しを求めるほうが簡単です) LBLY (跳ぶ前に見てください)の哲学。 EAFP は、「ダック タイピング」スタイルにある程度リンクしています。

動的型付けと静的型付け

ダックタイピングを使用する主な理由は、動的タイピングのサポートを提供することです。 Pythonプログラミング 。 Python では、変数のデータ型を指定する必要はなく、その後のコードで異なるデータ型の値を同じ変数に再割り当てできます。次の例を見てみましょう。

例 -

 x = 12000 print(type(x)) x = 'Dynamic Typing' print(type(x)) x = [1, 2, 3, 4] print(type(x)) 

出力:

C言語による行列プログラム
 

上記のコードでわかるように、変数 x に整数を代入し、 整数 タイプ。次に、文字列とリストを同じ変数に割り当てました。 Python インタープリターは、同じ変数のデータ型の変更を受け入れます。これは動的型付け動作です。

Java、swift など、他の多くのプログラミング言語は静的型です。データ型を指定して変数を宣言する必要があります。以下の例では、Python の代わりに Swift を使用して同じことを実行しようとします。

例 -

 # integer value assigning in JavaScript var a = 10 # Assinging string in swift a = 'Swift language' 

Swift 言語で文字列を割り当てることができなかったため、上記のコードはコンパイルできません。可変なので ある 整数として宣言されました。

ビューとテーブル

アヒルタイピングの概念

前に、Python が動的型付け言語であることを説明しました。ただし、カスタム データ型では動的アプローチを使用できます。次の例を理解してみましょう。

例 -

 class VisualStudio: def execute(self): print('Compiling') print('Running') print('Spell Check') print('Convention Check') class Desktop: def code(self, ide): ide.execute() ide = VisualStudio() desk = Desktop() desk.code(ide) 

出力:

 Compiling Running Spell Check Convention Check 

上記のコードでは、 ビジュアルスタジオ しなければならないクラス 実行する() 方法。デスクトップクラスでは、ide を code() の引数として渡しました。アン それは行きます のオブジェクトです ビジュアルスタジオ クラス。 ide の助けを借りて、私たちは 実行する() VisualStudio クラスのメソッド。

別の例を見てみましょう。

例-2

 class Duck: def swim(self): print('I'm a duck, and I can swim.') class Sparrow: def swim(self): print('I'm a sparrow, and I can swim.') class Crocodile: def swim_walk(self): print('I'm a Crocodile, and I can swim, but not quack.') def duck_testing(animal): animal.swim() duck_testing(Duck()) duck_testing(Sparrow()) duck_testing(Crocodile()) 

出力:

 I'm a duck, and I can swim. I'm a sparrow, and I can swim. Traceback (most recent call last): File '', line 24, in File '', line 19, in duck_testing AttributeError: 'Crocodile' object has no attribute 'swim' 

上記のコードでは、Duck クラスのインスタンスは、次の呼び出しによって反映されます。 アヒルのテスト 関数。これは、次を実装する Sparrow クラスでも発生します。 泳ぐ() 関数。しかし、Crocodile クラスの場合は、 泳ぐ() 関数。

JavaでCSVを読み取る

ダックタイピングが EAFP をサポートする仕組み

ダックタイピングは EAFP に最も適したスタイルです。なぜなら、 'タイプ' オブジェクトの。私たちはそれを世話するだけで済みます 行動 そして 能力 。次のステートメントを見てみましょう。

if-else ブロックがたくさんある場合、それは LBYL コーディング スタイルです。

しかし、try-excel ブロッ​​クが多数見られる場合は、EAFP コーダーである可能性があります。