October 2017
Intermediate to advanced
832 pages
13h 34m
Japanese
アヒルかどうかは問題ではありません。あなたのやっている言語ゲームであなたがさせたいアヒルのような習性の部分集合に応じて、アヒルのように「鳴く」か、アヒルのように「歩く」かなどをチェックしてください。
——Alex Martelli
comp.lang.python(2000年7月26日)より
本章では、9章の2次元Vector2dから大幅にステップアップして、多次元ベクトルを表現するクラスVectorを作成します。Vectorは、Pythonの標準的で、不変で、フラットなシーケンスと同じように動作します。要素は浮動小数点数です†1。本章の終わりまでに次に示す機能を実装します。
[†1] 監訳注:数学ではベクトルの個々のコンポーネントを「成分」といいますが、ここでは配列やリスト同様に「要素」と書きます。
__len__、__getitem__Vectorインスタンスを生成する適切なスライスのサポートまた、Vector2dで作成した読み取り専用プロパティに替えて、__getattr__を用いた動的な属性アクセスも実装します(シーケンス型ではあまり一般的ではありませんが)。
本章はかなりコード重視になっていますが、途中でちょっと一休みして、非形式的なインタフェースとしてのプロトコルという概念的な話題も取り上げます。そこでは、プロトコルとダックタイピングの関係、そして自分で独自の型を設計するときの実用的な意味も説明します。
それでは始めましょう。
Read now
Unlock full access