python学習ノート1——アヒルの模型


1.アヒルの模型
プログラム設計では、アヒルのタイプ(duck typing)はダイナミックなタイプのスタイルです.このスタイルでは、オブジェクトの有効な意味は、特定のクラスから継承されたり、特定のインタフェースを実装したりするのではなく、「現在のメソッドとプロパティのセット」によって決定されます.「アヒルのテスト」は次のように記述できます.
1羽の鳥がアヒルのように歩き、泳いでアヒルのように鳴き、アヒルのように鳴くと、この鳥はアヒルと呼ぶことができます」
アヒルのタイプでは、対象の行為に注目し、何ができるかに注目します.オブジェクトが属するタイプではありません.たとえば、アヒルのタイプを使用しない言語では、「アヒル」のタイプのオブジェクトを受け入れ、「歩く」メソッドと「呼ぶ」メソッドを呼び出す関数を作成できます.アヒルのタイプを使用する言語では、このような関数は任意のタイプのオブジェクトを受け入れ、その「歩く」メソッドと「呼ぶ」メソッドを呼び出すことができます.呼び出しが必要なメソッドが存在しない場合、ランタイムエラーが発生します.このような正確な「歩く」方法と「呼ぶ」方法を持つ任意のオブジェクトが関数によって受け入れられるこのような行為が上記の記述を引き出し,この決定タイプの方式がその名を得た.
アヒルのタイプは、通常、「いいえ」テスト方法と関数のパラメータのタイプのおかげで、ドキュメント、明確なコード、テストに依存して正しく使用されます.
#                          
try:
    field_names = field_names.replace(',',' ').split()
except AttributeError:
    pass
field_names = tuple(field_names)