Pythonの型ヒントには、UnionTypeVarという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の型アノテーションができるようになりました。これにより、UnionOptionalクラスのimportが不要になります。

value: int | str = 100

また、isinstanceissubclassでも|記号を使うことができるようになりました。

value = 'apple'
print(isinstance(value, str | int))  # True

以上、Pythonの型ヒントのUnionTypeVarについて簡単に説明しました。これらの概念を理解することで、Pythonの型ヒントをより効果的に利用することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です