November 2025
Intermediate to advanced
984 pages
16h 17m
Japanese
対象がアヒル「である」かを調べるべきではありません。各自のプログラムの中でアヒルのどのようなふるまいが求められているかに応じて、アヒル「のように鳴く」か、アヒル「のように歩く」かなどといった観点から判断を下すべきです。(
comp.lang.pythonより、2000年7月26日)—— Alex Martelli
この章では、「11章 Pythonicなオブジェクト」のVector2dを大きくステップアップさせて、多次元のVectorクラスを作成します。このVectorは、Pythonで標準のイミュータブルなフラットシーケンスと同じようにふるまいます。浮動小数点数の要素から構成され、最終的には以下の機能をすべて備えることになります。
__len__や__getitem__)Vectorインスタンスの生成シーケンス型ではあまり行われていませんが、Vector2dでの読み取り専用プロパティの代替として、__getattr__を利用した属性への動的なアクセスも実装します。
コードを中心に紹介しつつ、その合間に非公式なインターフェースとしてのプロトコルという概念について議論してゆきます。プロトコルとダックタイピングの関係や、これらが独自クラスを作成する際にもたらす意味も明らかにします。
大きな変更はありませんが、「12.4 プロトコルとダックタイピング」の終わり近くのノート記事としてtyping.Protocolに関する簡単な紹介を追加しました。 ...
Read now
Unlock full access