用語集

このセクションでは、仕様の他の場所で使用される可能性のあるいくつかの用語を定義します。

annotation expression

アノテーション内で使用することが有効な式。 これは通常、追加の type qualifiers を伴う type expression です。 詳細については、 "Type and annotation expression" を参照してください。

assignable

B が型 A に「代入可能」である場合、型チェッカーは x: A = b の代入でエラーを出さないようにする必要があります。ここで、 b は型が B である式です。 同様に、関数呼び出しと戻り値についても同様です。 f(b) では、 def f(x: A): ...def f(...) -> A: ... 内の return b は、 BA に代入可能である場合にのみ有効です(型エラーではありません)。 この場合、 AB から「代入可能」です。 fully static types の場合、「代入可能」は「 subtype 」と同義であり、「代入可能」は「 supertype 」と同義です。 gradual types の場合、型 B は型 A に代入可能です。 AB の完全に静的な materializations A'B' が存在し、 B'A' のサブタイプである場合に限ります。 詳細については、 型システムの概念 を参照してください。

consistent

2 つの fully static types は、 equivalent である場合、「一致」しています。 2 つの漸進的な型は、同じ型に materialize できる場合、「一致」しています。 詳細については、 型システムの概念 を参照してください。 2 つの型が一致している場合、それらは両方とも互いに assignable です。

consistent subtype

「一貫したサブタイプ」は「 assignable 」と同義です(「一貫したスーパータイプ」は「代入可能」と同義です)。 詳細については、 型システムの概念 を参照してください。

distribution

リリースを公開および配布するために使用されるパッケージ化されたファイル。 (PEP 426)

equivalent

2 つの fully static types AB は、 ABsubtype であり、 BAsubtype である場合、同等です。 これは、 AB が同じセットの可能なランタイムオブジェクトを表すことを意味します。 2 つの漸進的な型 AB は、 A のすべての materializationsB の materializations でもあり、 B のすべての materializations が A の materializations でもある場合、同等です。

fully static type

型に gradual form が含まれていない場合、その型は「完全に静的」です。 完全に静的な型は、可能なランタイム値のセットを表します。 完全に静的な型は、 subtype 関係に参加します。 詳細については、 型システムの概念 を参照してください。

gradual form

漸進的な形式は、 type expression の要素であり、それが一部である型を fully static type ではなく、可能な静的型のセットの表現にします。 詳細については、 型システムの概念 を参照してください。 主な漸進的な形式は Any です。 省略記号( ... )は、いくつかのコンテキストでは漸進的な形式です。 呼び出し可能 型で使用される場合、および tuple[Any, ...] で使用される場合(ただし、他の tuple 型ではない場合)に漸進的な形式です。

gradual type

Python 型システムのすべての型は「漸進的」です。 漸進的な型は、 fully static type 、または Any 、または Any または他の gradual form を含む型である場合があります。 漸進的な型は、必ずしも単一の可能なランタイム値のセットを表すわけではありません。 代わりに、可能な静的型のセット(可能なランタイム値のセットのセット)を表すことができます。 漸進的な型は、 subtype 関係には参加しませんが、 consistency および assignability には参加します。 それらは、より静的な、または完全に静的な型に materialized することができます。 詳細については、 型システムの概念 を参照してください。

inline

インライン型アノテーションは、 PEP 526 および PEP 3107 構文を使用してランタイムコードに含まれるアノテーションです(ファイル名は .py で終わります)。

materialize

gradual type は、 Any を他の任意の型に置き換えるか、 呼び出し可能 型の ... を型のリストに置き換えるか、 tuple[Any, ...] を特定の長さのタプル型に置き換えることにより、より静的な型(おそらく fully static type )に materialized できます。 この materialization 関係は、漸進的な型の assignability を定義するための鍵です。 詳細については、 型システムの概念 を参照してください。

module

Python ランタイムコードまたはスタブ型情報を含むファイル。

narrow

fully static type B は、 BAsubtype であり、 BAequivalent ではない場合、完全に静的な型 A よりも狭いです。 これは、 BA によって表される可能なオブジェクトの適切なサブセットを表すことを意味します。 「型の絞り込み」とは、型チェッカーが、代入またはランタイムチェックの値のために、制御フローの一部の場所で名前または式がより狭い型を持たなければならないと推測することです。

nominal

名目型(例:クラス名)は、その型の __class__ またはそのサブクラスのいずれかのサブクラスの値のセットを表します。 対照的に、 structural 型を参照してください。

package

Python モジュールに名前空間を提供するディレクトリまたはディレクトリ。 (パッケージと distributions の違いに注意してください。ほとんどのディストリビューションはインストールする 1 つのパッケージにちなんで名付けられていますが、一部のディストリビューションは複数のパッケージをインストールします。)

special form

特殊形式は、型システム内で特別な意味を持つオブジェクトであり、言語文法のキーワードに匹敵します。 例としては、 AnyGenericLiteral 、および TypedDict があります。 特殊形式は、 type expressions 内で使用できる場合がありますが、常にではありません。 特殊形式は通常、 typing モジュールまたは同等の typing_extensions からインポートできますが、一部の特殊形式は他のモジュールに配置されています。

structural

構造型(例: プロトコルTypedDict )は、 __class__ ではなく、プロパティ(例:属性、メソッド、辞書のキー/値の型)によって値のセットを定義します。 呼び出し可能 型も構造的です。 呼び出し可能な型は、サブクラス関係ではなく、シグネチャに基づいて他の呼び出し可能な型のサブタイプです。 対照的に、 nominal 型を参照してください。

stub

ランタイムコードが含まれていない型情報のみを含むファイル(ファイル名は .pyi で終わります)。 詳細については、 スタブファイル を参照してください。

subtype

fully static type B は、 B によって表される可能なランタイム値のセットが A によって表される可能なランタイム値のセットのサブセットである場合にのみ、完全に静的な型 A のサブタイプです。 nominal 型(クラス)の場合、サブタイプは継承によって定義されます。 structural 型の場合、サブタイプは共有される属性/メソッドまたはキーのセットによって定義されます。 サブタイプは supertype の逆です。 完全に静的ではない型は、他の型のサブタイプまたはスーパータイプではありませんが、 materialization を介して他の型に assignable できます。 詳細については、 型システムの概念 を参照してください。

supertype

fully static type A は、 A によって表される可能なランタイム値のセットが B によって表される可能なランタイム値のセットのスーパーセットである場合にのみ、完全に静的な型 B のスーパータイプです。 スーパータイプは subtype の逆です。 詳細については、 型システムの概念 を参照してください。

type expression

型を表す式。 型システムは、 annotation expression 内および他のいくつかのコンテキストで型式の使用を要求します。 詳細については、 "Type and annotation expression" を参照してください。

type qualifier

型修飾子は、 special form であり、 type expression を修飾して annotation expression を形成します。 たとえば、型修飾子 Final は、注釈付きの値がオーバーライドまたは変更されないことを示すために型の周りに使用できます。 この用語は、 @final デコレータなど、異なる構文コンテキストを使用して型を変更する他の特殊形式にも使用されます。

wide

fully static type A は、 BAsubtype であり、 BAequivalent ではない場合にのみ、完全に静的な型 B よりも広いです。 これは、 AB によって表される可能な値の適切なスーパーセットを表すことを意味します。 また、 "narrow" も参照してください。