プロポーザル
これは応募されたプロポーザルです。聞きたいと思うプロポーザルを各ページの下部にあるSNSのボタンで拡散しましょう。拡散された投稿をプロポーザルへの投票としてカウントし、選考時に参考にさせていただきます。
talk
Pythonを支える技術: プロトコル編(ja)
スピーカー
Takayuki Shimizukawa
対象レベル:
中級
カテゴリ:
Core Python (Language, Stdlib)
説明
Pythonには文字列やリストなど、長さをもつオブジェクトがあります。長さを手に入れるには、文字列なら、name.length ではなく len(name) のようにlen関数を使います。len関数は引数に渡されたオブジェクトと通信して、オブジェクトの長さを手に入れています。このときの通信の決まりをプロトコルと呼びます。if文がオブジェクトの真偽値を手に入れるのも、for文がオブジェクトからイテレートするオブジェクトを手に入れるのも、プロトコルで決まっています。
この発表では、PEP-544で定義されているPythonのプロトコルについて説明し、自分で実装するときにどう実装すればlen()やif文やfor文に適合したオブジェクトを表現できるのか説明します。
目的
Pythonのオブジェクトの動作がどうやって決まっているのかを把握してもらうために、具体的な実装と動作を紹介します。その背景には、Pythonのプロトコルという概念があります。本トークではPEP-544で定義されているプロトコルの概念を説明し、その応用例を紹介します。
概要
- Pythonデータ型再入門
- `len()`, `if`, `for` に適合したオブジェクトの実装例
- PEP-544 プロトコル: データ型が長さを返す、条件式に使える、繰り返し可能、のような動作を満たす条件
- collection.abc を使ったプロトコル実装の強制
- TypeHints によるプロトコルチェック
- まとめ