Python3から追加された型ヒントについて、よく使う書き方をまとめます。必要があれば随時追記していきます。
Typing, Type annotation, Type hinting, Type hint, 型アノテーション, 型ヒント, タイプアノテーション, タイプヒント etc... どれが正式名称なんだってわからなくなることがありますが、正式名称は「型ヒント」です。英語はType hint。typingは型ヒントのためのモジュールのこと
- 基本的な型ヒントの書き方
- よく使う基本的な型
- Dict, Tuple, List
- intまたはstrを返す、みたいな場合
- Optional型
- クラスも型ヒント可能
- 自分自身のオブジェクトを引数に取る場合など
- 参考
基本的な型ヒントの書き方
関数の引数と返り値を型ヒントする場合は以下のように書きます。
def greeting(name: str) -> str: # implements here
よく使う基本的な型
- str
- int
- float
- bool
- None
Dict, Tuple, List
from typing import Dict, Tuple, List Dict[str, int] Tuple[str, int] List[str]
intまたはstrを返す、みたいな場合
from typing import Union def dosomething() -> Union[str, int]: # returns int or str
Optional型
Union[A, None]
と同じ意味になります。
from typing import Optional def convert_to_int(value: string) -> Optonal[int]: # returns int or None
クラスも型ヒント可能
class Vector(): # implements def dosomething(value: int) -> Vector: # return Vector object
自分自身のオブジェクトを引数に取る場合など
よくあるかと思います。以下の場合普通に -> UserModel
と型ヒントすると、まだclassの定義が完了していないので、class not found となってしまいます。
class UserModel(): @classmethod def get_user_from_session() -> 'UserModel': # returns UserModel object
参考
- 公式ドキュメント: typing --- 型ヒントのサポート — Python 3.9.4 ドキュメント
- 昔こんな記事を書いていた: PyCon1日目メモ - 猫でもわかるWebプログラミングと副業
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者:コーリー・アルソフ
- 発売日: 2018/02/24
- メディア: 単行本
APIデザインの極意 Java/NetBeansアーキテクト探究ノート
- 作者:Jaroslav Tulach
- 発売日: 2014/07/02
- メディア: Kindle版