Python はポリモーフィズムをサポートしていませんし、ポリモーフィズムをサポートする必要もありません。Python はポリモーフィック言語であり、ダック タイピングを推奨しています。オブジェクトの有効なセマンティクスは、特定のクラスからの継承や特定のインターフェイスの実装によってではなく、現在のメソッドとプロパティのセットによって決まります。
ポリモーフィズム
は、親オブジェクトをその 1 つ以上の子オブジェクトと等しく設定できるようにする手法です。たとえば、Parent:=Child; などです。 More Morphism を使用すると、同じクラス (基本クラス) のポインターを使用して、異なるクラスのオブジェクトを参照したり、参照されるオブジェクトに応じて異なる方法で同じ操作を実行したりすることが可能になります。
関連する推奨事項: "Python ビデオ チュートリアル "
class A: def prt(self): print("A") class B(A): def prt(self): print("B") class C(A): def prt(self): print("C") class D(A): pass class E: def prt(self): print("E") class F: pass def test(arg): arg.prt() a = A() b = B() c = C() d = D() e = E() f = F() test(a) test(b) test(c) test(d) test(e) test(f) 输出结果 A B C A E Traceback (most recent call last): File "D:/Python/多态1.py", line 45, in <module> test(f) File "D:/Python/多态1.py", line 30, in test arg.prt() AttributeError: 'F' object has no attribute 'prt' Process finished with exit code 1
一見すると、Python は test(a)、test(b)、test( を呼び出す) ポリモーフィズムをサポートしているように見えます。 c )、test(d) は非常にうまく機能しますが、以下は大きく異なります。
test(e) を呼び出すとき、Python は e の prt メソッドを呼び出すだけで、e が A サブクラスのオブジェクトであるかどうかは判断しません (実際、テスト メソッドの定義時にパラメーターの型は指定されません) 、そしてPythonはそれをまったく判断できません)。
test(f) を呼び出すときにエラーが発生します。理由は非常に単純で、f には prt メソッドがありません。
まず第一に、Python はポリモーフィズムをサポートしていませんし、ポリモーフィズムをサポートする必要もありません。Python はポリモーフィック言語であり、ダック タイピングを推奨しています。以下は、Wikipedia からのダック タイピングの説明です:
プログラミングにおけるダック タイピング (英語: duck testing) は、動的型付けの 1 つのスタイルです。このスタイルでは、オブジェクトの有効なセマンティクスは、特定のクラスからの継承や特定のインターフェイスの実装によってではなく、現在のメソッドとプロパティのセットによって決まります。この概念の名前は、ジェームズ ウィットコム ライリーによって提案されたアヒル テストに由来しています。「アヒル テスト」は次のように表現できます:
「アヒルのように歩き、アヒルのように泳ぐ鳥を見ると、
アヒルタイピングでは、オブジェクト自体のタイプではなく、それがどのように使用されるかに焦点が当てられます。たとえば、
アヒル タイピングを使用しない言語では、アヒル型のオブジェクトを受け入れ、その walk メソッドと bark メソッドを呼び出す関数を作成できます。
ダックタイピングを使用する言語では、このような関数は任意の型のオブジェクトを受け入れ、その walk メソッドと call メソッドを呼び出すことができます。呼び出す必要があるメソッドが存在しない場合は、実行時エラーが発生します。正しい walk メソッドと call メソッドを持つオブジェクトはすべて関数で受け入れられるという事実が上記のステートメントにつながり、型を決定するこの方法の名前が付けられました。
ダックタイピングは、多くの場合、メソッドや関数のパラメーターの型をテストするのではなく、ドキュメント、明確なコード、および正しい使用法を保証するためのテストに依存することでメリットが得られます。静的型付け言語から動的型付け言語に移行するユーザーは、多くの場合、静的 (実行時前) 型チェックを追加しようとします。これにより、ダック タイピングの利点とスケーラビリティが損なわれ、言語の動的な性質が制約されます。
Python のオブジェクトもメモリの一部であることに疑いの余地はありません。メモリには属性とメソッドに加えて、オブジェクトの型も含まれます。a= などの参照を通じてオブジェクトにアクセスします。 A(). まず、Python でオブジェクト A を作成し、変数 a を宣言して、変数 a をオブジェクト A に関連付けます。変数 a には型がありません。その型は、関連付けられているオブジェクトによって異なります。 a=A() のとき、a は型 A の参照です。 a は型 A であると言えます。 a に値 3 が割り当てられ、a=3 の場合、a は整数参照ですが、Python は弱いわけではありません。言語を入力します。Python では '2' 3 はエラーを報告しますが、PHP では '2' 3 は 5 を返します。 Python の変数は c のポインタに似ていることがわかります。c との違いは、Python の変数は任意の型を指すことができることです。これを言うのは正確ではありませんが、理解しやすいです。
したがって、Python の実行中、パラメーターが渡されるまではパラメーターの型はわかりません。Python のメソッドも遅延バインディングですが、Java のポリモーフィック遅延バインディングとは異なります。少なくともオブジェクトの型は知っていますが、Python はパラメータの型を知りません。
テスト メソッドでは、1 つのパラメーターを受け取り、このパラメーターの prt メソッドを呼び出すことのみが規定されています。実行時に、このパラメータに prt メソッドがある場合、Python はそれを実行します。そうでない場合、abcde には prt メソッドがありますが、f にはないため、Python はエラーを報告します。したがって、上記の結果が得られます。これが Python の実行方法です。
以上がPython のポリモーフィズムを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
