PyCharm 2024.3 ヘルプ

PyCharm の型ヒント

PyCharm は、スクリプト内のオブジェクトのタイプのインスペクションとチェックを支援するさまざまな手段を提供します。PyCharm は、typing モジュールと PEP 484(英語) で定義された形式を使用して、関数アノテーションと型コメントで型ヒントをサポートします。

型ヒントを追加する

PyCharm は PEP 484(英語) でサポートされているタイプを追加するためのすべてのメソッドをサポートしていますが、インテンションアクションによる型ヒントを使用するのが最も便利です。使用するインタープリターに応じて、型はアノテーション(Python 3)またはコメント(Python 2)として追加されます。

型ヒントを追加するには、次の手順を実行する

  1. コード要素を選択します。

  2. Alt+Enter を押します。

  3. 型ヒントを追加 ... を選択します。

  4. 適切な場合は、Enter を押してアクションを完了するか、タイプを編集します。

サンプル

インテンションアクション

アノテーションの結果コード (Python 3)

変数

example of adding a type hint for a variable
example of adding a type hint for a variable (Python 3)

関数

example of adding a type hint for a function
example of adding a type hint for a function (Python 3)

クラス属性

example of adding a type hint for a class attribute
example of adding a type hint for a class attribute (Python 3)

サンプル

インテンションアクション

コメントの結果コード (Python 2)

変数

example of adding a type hint for a variable
example of adding a type hint for a variable (Python 2)

関数

example of adding a type hint for a function
example of adding a type hint for a function (Python 2)

クラス属性

example of adding a type hint for a class attribute
example of adding a type hint for a class attribute (Python 2)

Python スタブを使用して、変数、関数、クラスフィールドの型を指定することもできます。

コメントの変換

コメントベースの型ヒントの場合、PyCharm は、コメントベースの型ヒントを変数アノテーションに変換できるインテンションアクションを提案します。このインテンションには変数アノテーションに変換するという名前があり、次のように動作します。

from typing import List, Optional xs = [] # type: List[Optional[str]]
from typing import List, Optional xs: List[Optional[str]] = []

型ヒントの検証

型ヒントを適用するときはいつでも、PyCharm は、サポートされている PEP に従ってタイプが正しく使用されているかどうかをチェックします。使用箇所エラーがある場合、対応する警告が表示され、推奨されるアクションが提案されます。以下は検証の例です。

検証エラー

推奨アクション

型宣言の重複。

incorrect type hint

いずれかの型宣言を削除します。

型宣言の引数の数は、関数の引数の数とは異なります。

too many arguments

引数の数を調整します。

アンパックを伴う型コメントは、対応するターゲットと一致しません。

incorrect type for unpacked variables

ターゲットフォーマットをチェックし、それに応じてタイプコメントを変更してください。

Callable パラメーターの構文が正しくありません。

Incorrect Callable format

推奨フォーマットを使用し、必要な角括弧を追加して Callable パラメーターをラップします。

代入式に予期しない型があります。

Unexpected type in an assignment expression

予想されるパターンに合うようにタイプを揃えます。

Final 変数に値を代入します。

Assigning a value to a Final variable

Final とアノテーションが付けられた変数を変更することはできません。変数の型を変更することを検討してください。

Final アノテーションが付けられたクラスを継承します。

Inheriting a final class

Final アノテーションを持つクラスを継承することはできません。別のクラスを作成することを検討してください。

@final で装飾されたメソッドのオーバーライド。

Overriding a final method

@final で装飾されたメソッドをオーバーライドすることはできません。別のメソッドを定義することを検討してください。

関数引数の型が正しくありません。

Function argument type validation

リストの代わりに辞書を foo() 関数に渡します。

TypedDict タイプのキーに間違ったタイプの値を割り当てる。

Type validation for a TypedDict class

year の値を int として指定します。

add_movie({'title': 'Blade Runner', 'year': 1982})

TypedDict タイプで間違ったキーを使用する:

Missing key, extra key error

型定義で指定されているようにキーを割り当てます。

add_movie({'title': 'Blade Runner', 'year': 1982})

装飾された関数の不適切な使用。PyCharm は、デコレーターのタイプに基づいて、装飾された関数のタイプを検証します。

Infer type of a decorated function

必要に応じて、関数 return を使用するデコレーターまたはステートメントを変更します。

# type: ignore または # noqa コメントを追加して、型検証の警告を抑制したり、欠落しているインポートステートメントを無視したりできます。

Ignore type validation

Python スタブ

Python スタブファイルを使用すると、Python 3 構文を使用して型ヒントを指定できます。これらのヒントは、インタープリターで使用されている Python バージョンに関係なく、Python ファイルで利用できます。

次の例では、スタブファイル (stubs.pyi) からの sample_function の型ヒントが Python ファイル (stubs.py) で使用可能になります。

スタブアナログが検出されたパッケージを使用している場合は、次のメッセージが表示されます。

The stub package inspection

スタブパッケージをインストールし、このメッセージを無視して現在インストールされているパッケージで作業を続行するか、プロジェクト設定でこの種のインスペクションを無効にすることができます。

Typeshed を使用する

Typeshed(英語) は、標準の Python ライブラリとさまざまなパッケージの型アノテーションが付いたファイルのセットです。Typeshed スタブは、型ヒントで定義された Python クラス、関数、モジュールの定義を提供します。PyCharm は、この情報を使用して、コード補完、インスペクション、その他のコードインサイト機能を向上させます。

PyCharm には Typeshed(英語) スタブがバンドルされています。使用可能な Typeshed スタブのリストは、ノード外部ライブラリ | <Python インタープリター> | Typeshed スタブのプロジェクトビューに表示されます。

バンドルされた Typeshed リポジトリを独自のバージョンでオーバーライドするには、次の手順を実行する

  1. スタブの一部またはすべてをプロジェクトのディレクトリにコピーします。

  2. ディレクトリのコンテキストメニューからディレクトリをマーク | ソースルートを選択して、ディレクトリをソースルートとしてマークします。

Python スケルトンリポジトリ https://github.com/JetBrains/python-skeletons(英語) は廃止予定です。

関連ページ:

Python

PyCharm で Python スクリプトを開発するには:Python をダウンロードしてインストールします。少なくとも 1 つの Python インタープリターを構成します。Windows ユーザーの場合、Windows 用 Python をインストールすることをお勧めします。サポートされるバージョン:Python 2: バージョン 2.7、Python 3: バージョン 3.6 からバージョン 3.13 まで、次の機能は、Python 3.13 サポートの一部として使用できます。PEP 696...

スタブ

PyCharm は、.pyi 拡張機能を備えた Python スタブファイルをサポートします。これらのファイルを使用すると、Python 2 と 3 の両方に Python 3 構文を使用して型ヒントを指定できます。独自の実装用のスタブファイルを作成するターゲット実装が存在するディレクトリに移動します。メインメニューからを選択し、次に Python ファイルを選択します(または、ショートカットを使用します)。新規 Python ファイルダイアログで、Python スタブを選択し、ファイル名を指定しま...

Python インタープリターを構成する

PyCharm の Python インタープリター:PyCharm で Python コードを使用するには、少なくとも 1 つの Python インタープリターを構成する必要があります。Python インストールで使用可能なシステムインタープリターを使用できます。また、Virtualenv、pipenv、Poetry、または conda 仮想環境を作成することもできます。仮想環境は、基本インタープリターとインストールされたパッケージで構成されます。PyCharm Professional では、SS...

パッケージのインストール、アンインストール、アップグレード

PyCharm は、特定の Python インタープリター用の Python パッケージをインストール、アンインストール、アップグレードする方法を提供します。これは、各プロジェクトに独自のパッケージセットがあることを意味し、これは Python 依存関係管理のベストプラクティスと見なされます。デフォルトでは、PyCharm はプロジェクトパッケージの管理に pip を使用します。conda 環境では、conda パッケージマネージャーを使用できます。PyCharm では、Python パッケージツー...

docstring のレガシー型構文

PyCharm は docstring を使用して Python で型を指定するためのレガシーアプローチをサポートします。その際、サポートされているフォーマットは次のとおりです。reStructuredText、NumPy、Google、必要な docstring 形式を選択するには、設定ダイアログの Python 統合ツールページを使用します。Python の docstrings の型構文は、どの標準でも定義されていません。PyCharm は次の表記を提案しています。現在のスコープで表示される...

パターンマッチング

PyCharm は、PEP-634、PEP-635、PEP-636 で導入され、Python 3.10 以降で使用可能なパターンマッチングのサポートを提供します。パターンマッチングは、関連するアクションを伴うパターンの match ステートメントおよび case ステートメントの形式で追加されました。match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case...