Python最新バージョン対応!より良い型ヒントの書き方
#Python_Monthly_Topics
https://gihyo.jp/article/2022/09/monthly-python-2209
より明確な型ヒントを付ける
company_branches: dict[str, dict[str, dict[str, str | bool | int]]]
IMO:こうなってしまいがちだが、分かりづらい(一見して意味が取れない)
『ロバストPython』は同種コレクション/異種コレクションという概念で問題をわかりやすく説明している(5.1 コレクションの型アノテーション)
これを受け取る関数の型ヒント、型が保証できないと続く
TypeAliasでより明確に型ヒントを定義 #型エイリアス(typing)
code:good_exapmle.py
Name = str # 意味のある名前を付ける
Staff = dictstr, Name | IsLeader | LeaderPeriod
Branch = dictstr, Staff
グローバル変数に代入した場合、型エイリアスとなります。
TypeAliasでより明確にする方法と続く
この方法は、「⁠Python US 2022」のキーノートでコアデベロッパーのŁukasz Langa氏がお勧めすると力説していました。
Keynote - Łukasz Langa (PyCon US 2022)
TypeAlias
文字列で宣言できる前方参照の時に有効な手段
👉型エイリアスでない別の方法:NamedTupleや@dataclass PythonとType Hintsで書くバックエンド
TypedDictの活用(TODO)
typing.TypedDict
class LeaderStaff(Staff, total=False):
# スタッフを表す辞書にオプショナルキーがあるので継承して別クラスを宣言