\

Pythonの型ヒント(アノテーション)については、基本的に公式ドキュメントに記述されています。しかし、実用的な範囲でのシンプルな例が記載されているため、理解したいこと以外の情報もあり、やや理解しにくいことがある。

TypeVarとは

TypeVarは、「とある決まった型」を表す場合に用いる型変数である。

from typing import TypeVar
T = TypeVar("T")
def get_t_arg(arg: T) -> T:
    return arg

上記のget_t_arg(arg: T) -> Tの型ヒントは、「引数argの型がTであるとき、返り値の型がTである」ことを意味します。

TypeVarとAnyの違い

Anyとは、制約のない型である。

from typing import Any
def get_any_arg(arg: Any) -> Any:
    return arg

上記のget_any_arg(arg: Any) -> Anyの型ヒントは、「引数argに型の制約はなく、返り値にも型の制約はない」ことを意味します。

許容する型を制限する場合のTypeVarの使用例

TypeVarを用いたいが、許容する型を制限したい場合がある(例えば「intまたはfloatのみを許容する」など)。

from typing import TypeVar
T = TypeVar("T", int, float)
def add_one_to_t_arg(arg: T) -> T:
    return arg + 1

上記のようにT = TypeVar("T", int, float)と宣言した際のadd_one_to_t_arg(arg: T) -> Tの型ヒントは、「引数argの型はintまたはfloatであり、argの型がintのときの返り値の型はint、argの型がfloatのときの返り値の型はfloatである」ことを意味します。

以上がPythonのTypeVarについての基本的な説明です。この情報がPythonの型ヒントを理解する上で役立つことを願っています。

投稿者 admin

コメントを残す

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