Python 2 と型ヒント (Type Hints)

Python 2 の Type Hints

この記事では PEP 484 — Type Hints の更新によって提案されている Python 2 における型ヒントについての情報をまとめます.

型ヒントとは

Python 3.5 から導入された型ヒント (Type Hints) はソースコードに型注釈 (型アノテーション) を記述する標準的な方法を定義するものです. この記法は mypy で利用されていたものの影響を強く受けており, Python 3.0 で導入された関数アノテーションを利用します. 型ヒントは次のように記述します:

Python 3.5 は様々な型を記述するために typing モジュールが追加されました. この typing モジュールは Python 3.5 以前でもバックポートが利用できます.

typing モジュールのバックポートが存在しても, Python 2 では関数アノテーションが利用できないため, Python 2/3 両対応のコードで型ヒントを利用することは不可能でした.

PEP 484

PEP 484 は型ヒントの記述方法を定義した PEP です. PEP 484 は何度かの更新を経て, Python 2.7 における型ヒントの記述方法の提案 (suggested, not mandatory) が追記されました.

Python 2 における型ヒントは # type: から始まる1行のコメントとして書かれます. このコメントを関数定義の直後, docstring の前に記述します. 先ほどの Python 3 での例は Python 2 では次のように記述します.

この記法をサポートするツールでは Python 2/3 の別によらず, この記法に対応することが求められています. これにより Python 2/3 両対応のコードでも型ヒントが利用できるようになることが期待されます.

記述方法についての注意

インスタンスメソッドとクラスメソッドの第1引数以外のすべての引数に型注釈を記述する必要があります.

関数アノテーションを用いる方法では返り値の型注釈を省略すると Any を指定したものと見なされますが, この記法では返り値の型注釈を省略することは出来ません.

*args**kwargs の型注釈は対応する型の前に *** を追加することで記述します.

ツールの対応状況

mypy

2016/2/16 にリリースされた mypy 0.3 で Python 2 での型ヒントのサポートが追加されました.

PyCharm

今後リリース予定の PyCharm 5.1 で Python 2 での型ヒントのサポートが追加される予定です. 記事執筆時点では PyCharm 5.1 の EAP (Early Access Preview) で試すことが出来ます.

コメントを残す

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