Pythonの型ヒントには、Union
とTypeVar
という2つの重要な概念があります。これらは、引数や戻り値の型を複数の種類に制限することができます。
Union
Union
は、「str or int」のように、「いくつかのある型のうちいずれか」にマッチすればOKという型ヒントです。たとえば、Union[int, str]
はint型かstr型を許容する複合的な型の集合であり、たとえ指定した引数や戻り値がどちらの型であるかがわかっているとしても、型チェックの時点では複合的な型であると判断されます。
from typing import Union
value: Union[int, str] = 10
TypeVar
一方、TypeVar
はジェネリクスの型変数を定義するための型ヒントです。TypeVar("T", str, int)
は「str型かint型に制限した型変数T」を宣言しています。型変数Tが指定されたパラメーターはすべて同じ型である必要があります。
from typing import TypeVar
T = TypeVar("T", str, int)
Python 3.10の新機能
Python 3.10からは、|
記号を使ってUnionの型アノテーションができるようになりました。これにより、Union
やOptional
クラスのimportが不要になります。
value: int | str = 100
また、isinstance
やissubclass
でも|
記号を使うことができるようになりました。
value = 'apple'
print(isinstance(value, str | int)) # True
以上、Pythonの型ヒントのUnion
とTypeVar
について簡単に説明しました。これらの概念を理解することで、Pythonの型ヒントをより効果的に利用することができます。