PyCharm の型ヒント
PyCharm は、スクリプト内のオブジェクトの型を調査・確認するためのさまざまな手段を提供します。 PyCharm は、 typing モジュールと PEP 484で定義された形式を使用して、関数のアノテーションや型コメントにおける 型ヒントをサポートします。
型ヒントを追加する
PyCharm は PEP 484 でサポートされている型追加方法すべてに対応していますが、インテンションアクションで型ヒントを挿入するのが最も便利です。 使用するインタープリターに応じて、型はアノテーション(Python 3)またはコメント(Python 2)として追加されます。
コード要素を選択します。
Alt+Enter を押す。
型ヒントを追加 ... を選択します。
適切な場合は、 Enter を押してアクションを完了するか、タイプを編集します。
サンプル | インテンションアクション | アノテーションの結果コード (Python 3) |
|---|---|---|
変数 | ![]() | ![]() |
関数 | ![]() | ![]() |
クラス属性 | ![]() | ![]() |
サンプル | インテンションアクション | コメントの結果コード (Python 2) |
|---|---|---|
変数 | ![]() | ![]() |
関数 | ![]() | ![]() |
クラス属性 | ![]() | ![]() |
Python スタブを使用して、変数、関数、クラスフィールドの型を指定することもできます。
アノテーションを使用して戻り値の型を指定する
Python 3 アノテーションを使用して、関数の戻り値の型にアノテーションを付けることができます。 PyCharm が戻り値のアノテーションを挿入し、その後必要に応じて型を調整できます:
関数名にキャレットを置き、 Alt+Enter を押します。
開いたインテンションアクションのリストで、 アノテーションを使用して戻り値の型を指定する を選択します。

コメントを変換する
コメントベースの型ヒントの場合、PyCharm はコメントベースの型ヒントを変数アノテーションに変換できるインテンションアクションを提案します。 このインテンションには 変数アノテーションに変換する という名前があり、次のように動作します。
前 | 後 |
|---|---|
from typing import List, Optional
xs = [] # type: List[Optional[str]]
|
from typing import List, Optional
xs: List[Optional[str]] = []
|
型ヒントを検証する
型ヒントを適用するたびに、PyCharm は サポートされている PEP に従って型が正しく使用されているかをチェックします。 使用箇所エラーがある場合、対応する警告が表示され、推奨されるアクションが提案されます。 以下は検証の例です。
検証エラー | 推奨アクション |
|---|---|
型宣言の重複。 ![]() | いずれかの型宣言を削除します。 |
型宣言内の引数の数が関数の引数の数と異なります。 ![]() | 引数の数を調整します。 |
アンパックを伴う型コメントは、対応するターゲットと一致しません。 ![]() | ターゲットフォーマットをチェックし、それに応じてタイプコメントを変更してください。 |
| 推奨フォーマットを使用し、必要な角括弧を追加して |
代入式で予期しない型です。 ![]() | 予想されるパターンに合うようにタイプを揃えます。 |
![]() |
|
![]() |
|
![]() |
|
関数引数の型が正しくありません。 ![]() | リストの代わりに辞書を |
![]() |
|
![]() | 型定義で指定されているようにキーを割り当てます。
|
装飾された関数の不適切な使用。 PyCharm はデコレーターの型に基づいて、デコレータ付き関数の型を検証します: ![]() | 必要に応じて、関数 return を使用するデコレーターまたはステートメントを変更します。 |
# type: ignore または # noqa コメントを追加して、型検証の警告を抑制したり、欠落しているインポートステートメントを無視したりできます。

Python スタブ
Python スタブファイルを使用すると、Python 3 構文を使用して型ヒントを指定できます。 これらのヒントは、 インタープリターで使用されている Python バージョンに関係なく、Python ファイルで利用できます。
次の例では、スタブファイル ( stubs.pyi ) からの sample_function の型ヒントが Python ファイル ( stubs.py ) で使用可能になります。
スタブアナログが検出されたパッケージを使用している場合は、次のメッセージが表示されます。
![]()
スタブパッケージをインストールし、このメッセージを無視して現在インストールされているパッケージで作業を続行するか、プロジェクト 設定 でこの種のインスペクションを無効にすることができます。
Typeshed を使用する
Typeshed(英語) は、標準の Python ライブラリとさまざまなパッケージの型アノテーションが付いたファイルのセットです。 Typeshed スタブは、型ヒントで定義された Python クラス、関数、モジュールの定義を提供します。 PyCharm は、この情報を活用して、コード補完、インスペクション、その他のコードインサイト機能を強化します。
PyCharm には Typeshed スタブがバンドルされています。 使用可能な Typeshed スタブのリストは、ノード 外部ライブラリ | <Python インタープリター> | Typeshed スタブ のプロジェクトビューに表示されます。
バンドルされた Typeshed リポジトリを独自のバージョンでオーバーライドするには、次の手順を実行する
スタブの一部またはすべてをプロジェクトのディレクトリにコピーします。
ディレクトリのコンテキストメニューから ディレクトリをマーク | ソースルート を選択して、ディレクトリをソースルートとしてマークします。
Python スケルトンリポジトリ https://github.com/JetBrains/python-skeletons(英語) は廃止予定です。




















