Pythonの型ヒントには、クラス自体を指定するためのtyping.Type
というものがあります。これは、クラス自体に対しての型ヒントに使えるもので、例えば自作クラスや組み込みの型(クラス)自体を指し示すために使われます。
以下に、typing.Type
の使用例を示します。
from typing import Type
class Person:
@staticmethod
def get_cls_name() -> str:
return "Person"
def get_cls_name(cls: Type[Person]) -> str:
return cls.get_cls_name()
上記のコードでは、Person
クラスにクラス名を返すstaticmethod
を定義し、その外に、get_cls_name
関数を定義しています。get_cls_name
関数の引数cls
はPerson
のインスタンスではなくPerson
自身であり、返り値の型はstr
である。
また、TypeVar
と併用することも可能です。以下に、TypeVar
と併用する場合の使用例を示します。
from typing import Type, TypeVar
Number = TypeVar("Number", int, float)
def to_number(str_number: str, type_: Type[Number]) -> Number:
return type_(str_number)
上記のコードでは、to_number
関数の引数str_number
の型はstr
、type_
はint
またはfloat
自身であり、type_
がint
自身の際の返り値の型はint
、type_
がfloat
自身の際の返り値の型はfloat
である。
以上、Pythonの型ヒントにおけるクラス自体を指定するtyping.Type
について簡単に説明しました。より詳細な情報はPythonの公式ドキュメントをご覧ください。