この記事の内容は Python におけるポリモーフィズムの解析例 (詳細) であり、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。
class Human(object): # 父类 :创建“人”类 def __init__(self): print('Ill pound the code and buy you a bag') # 我会敲打码,给你买包包 class Man(Human): # 1)子类1 创建“男人”类 def __init__(self): print('In hs, we should have the knowledge to drink wine.The President up, the kitchen down') # 在衡水,要文武双全,有知识,会喝酒;上的总裁,下的厨房 class Woman(Human):# 2)子类2 创建“女人”类 def __init__(self): print('If a man loves me, I dont care if he has a house or a car.Woman?Do you believe a') # 如果男人爱我,我不会在意他有没有房子车子。呵呵女人啊?你信了那只能说明你太天真了。 print('human:') h = Human() print('man:') m = Man() print('woman:') w = Woman() # 分别对 人类、男人类、女人类创建一个变量h、m、w print(isinstance(h,Human))#isinstance举例 print(isinstance(m,Man)) print(isinstance(m,Human)) # 分别判断h是人类吗、m是男人类吗、m是人类吗,输出结果全部为是。 #输出结果是: # human: # Ill pound the code and buy you a bag # man: # In hs, we should have the knowledge to drink wine.The President up, the kitchen down # woman: # If a man loves me, I dont care if he has a house or a car.Woman?Do you believe a # True # True # True
これは変数の多態性であり、さらに m が __init__ メソッドを呼び出すと、出力される内容が人間の __init__ とは異なるという、多態性関数の多態性です。
ダックタイピング:
参考ダックタイピング. ダックタイピング(英: duck testing )とは、動的タイピングの形式の 1 つ。このスタイルでは、オブジェクトの有効なセマンティクスは、特定のクラスからの継承や特定のインターフェイスの実装によってではなく、「現在のメソッドとプロパティのセット」によって決まります。この概念の名前は、ジェームズ ウィットコム ライリーによって提案されたアヒル テストに由来しています。「アヒル テスト」は次のように表現できます:
「アヒルのように歩き、アヒルのように泳ぐ鳥を見ると、
アヒルタイピングでは、オブジェクト自体のタイプではなく、それがどのように使用されるかに焦点が当てられます。たとえば、ダック タイピングを使用しない言語では、「duck」型のオブジェクトを受け取り、その「walk」メソッドと「quack」メソッドを呼び出す関数を作成できます。ダック タイピングを使用する言語では、このような関数は任意の型のオブジェクトを受け入れ、その「walk」メソッドと「call」メソッドを呼び出すことができます。呼び出す必要があるメソッドが存在しない場合は、実行時エラーが発生します。正しい "walk" メソッドと "call" メソッドを持つオブジェクトのこの動作は、関数によって受け入れられるため、上記のステートメントが導き出され、型を決定するこの方法に名前が付けられています。
ダックタイピングは、多くの場合、メソッドや関数の引数の型をテストせず、ドキュメント、明確なコード、および正しい使用法を保証するテストに依存することで恩恵を受けます。
要約: ダックタイピングとは、自分のものではないと思われるメソッド (他の関数のメソッド) を使用することを意味し、独自の関数はインスタンス化後に性質が変わります。
以上がPythonにおける多態性の解析例(詳細)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。