# 8.15. `types` --- 組み込み型の名前

ソースコード: Lib/types.py

このモジュールは標準のPythonインタプリタで使われているオブジェクトの型について、名前を定義しています(拡張モジュールで定義されている型を除く)。また、このモジュールには `listiterator` 型のような処理中に例外が起きる型は含まれません。 `from types import *` のように使っても安全です -- モジュールはここでリストされている以外の名前をエクスポートしません。このモジュールの将来のバージョンで追加される名前は、 `Type` で終わる予定です。

典型的な利用方法は、関数が以下のように引数の型によって異なる動作をする場合です:

    from types import *
    def delete(mylist, item):
        if type(item) is IntType:
           del mylist[item]
        else:
           mylist.remove(item)

Python 2.2以降では、 `int()` や `str()` のようなファクトリ関数は、型の名前となりましたので、 `types` を使用する必要はなくなりました。上記のサンプルは、以下のように記述する事が推奨されています。

    def delete(mylist, item):
        if isinstance(item, int):
           del mylist[item]
        else:
           mylist.remove(item)

このモジュールは以下の名前を定義しています。

`types.``NoneType`

  `None` の型です。

`types.``TypeType`

  typeオブジェクトの型です (`type()` などによって返されます)。組み込みの `type` のエイリアスになります。

`types.``BooleanType`

  `bool` の `True` と `False` の型です。これは組み込みの `bool` のエイリアスです。

  バージョン 2.3 で追加.

`types.``IntType`

  整数の型です (e.g. `1`)。組み込みの `int` のエイリアスになります。

`types.``LongType`

  長整数の型です (e.g. `1L`)。組み込みの `long` のエイリアスになります。

`types.``FloatType`

  浮動小数点数の型です (e.g. `1.0`)。組み込みの `float` のエイリアスになります。

`types.``ComplexType`

  複素数の型です (e.g. `1.0j`)。 Python が複素数のサポートなしでコンパイルされていた場合には定義されません。

`types.``StringType`

  文字列の型です (e.g. `'Spam'`)。組み込みの `str` のエイリアスになります。

`types.``UnicodeType`

  Unicode 文字列の型です (e.g. `u'Spam'`)。 Python が Unicode のサポートなしでコンパイルされていた場合には定義されません。組み込みの `Unicode` のエイリアスになります。

`types.``TupleType`

  タプルの型です (e.g. `(1, 2, 3, 'Spam')`)。組み込みの `tuple` のエイリアスになります。

`types.``ListType`

  リストの型です (e.g. `[0, 1, 2, 3]`)。組み込みの `list` のエイリアスになります。

`types.``DictType`

  辞書の型です (e.g. `{'Bacon': 1, 'Ham': 0}`)。組み込みの `dict` のエイリアスになります。

`types.``DictionaryType`

  `DictType` の別名です。

`types.``FunctionType`
`types.``LambdaType`

  ユーザー定義の関数または `lambda` 式によって作成された関数の型です。

`types.``GeneratorType`

  ジェネレータ (generator) 関数の呼び出しによって生成されたイテレータオブジェクトの型です。

  バージョン 2.2 で追加.

`types.``CodeType`

  `compile()` 関数などによって返されるコードオブジェクトの型です。

`types.``ClassType`

  ユーザー定義の、旧形式クラスの型です。

`types.``InstanceType`

  ユーザー定義の旧形式クラスのインスタンスの型です。

`types.``MethodType`

  ユーザー定義のクラスのインスタンスのメソッドの型です。

`types.``UnboundMethodType`

  `MethodType` の別名です。

`types.``BuiltinFunctionType`
`types.``BuiltinMethodType`

  `len()` や `sys.exit()` のような組み込み関数や、組み込み型のメソッドの型です。 (ここでは、"組み込み"という単語を、"C で書かれた" という意味で使っています)

`types.``ModuleType`

  モジュールの型です。

`types.``FileType`

  `sys.stdout` のような open されたファイルオブジェクトの型です。組み込みの `file` のエイリアスになります。

`types.``XRangeType`

  `xrange()` 関数によって返される range オブジェクトの型です。組み込みの `xrange` のエイリアスになります。

`types.``SliceType`

  `slice()` 関数によって返されるオブジェクトの型です。組み込みの `slice` のエイリアスになります。

`types.``EllipsisType`

  `Ellipsis` の型です。

`types.``TracebackType`

  `sys.exc_traceback` に含まれるようなトレースバックオブジェクトの型です。

`types.``FrameType`

  フレームオブジェクトの型です。トレースバックオブジェクト `tb` の `tb.tb_frame` などです。

`types.``BufferType`

  `buffer()` 関数によって作られるバッファオブジェクトの型です。

`types.``DictProxyType`

  `TypeType.__dict__` のような dict へのプロキシ型です。

`types.``NotImplementedType`

  `NotImplemented` の型です。

`types.``GetSetDescriptorType`

  `FrameType.f_locals` や `array.array.typecode` のような、拡張モジュールにおいて `PyGetSetDef` によって定義されたオブジェクトの型です。この型はオブジェクト属性のディスクリプタとして利用されます。 `property` 型と同じ目的を持った型ですが、こちらは拡張モジュールで定義された型のためのものです。

  バージョン 2.5 で追加.

`types.``MemberDescriptorType`

  `datetime.timedelta.days` のような、拡張モジュールにおいて `PyMemberDef` によって定義されたオブジェクトの型です。この型は、標準の変換関数を利用するような、Cのシンプルなデータメンバで利用されます。 `property` 型と同じ目的を持った型ですが、こちらは拡張モジュールで定義された型のためのものです。

  Pythonの他の実装では、この型は `GetSetDescriptorType` と同じかもしれません。

  バージョン 2.5 で追加.

`types.``StringTypes`

  文字列型のチェックを簡単にするための `StringType` と `UnicodeType` を含むシーケンスです。 `UnicodeType` は実行中の版の Python に含まれている場合にだけ含まれるので、2 つの文字列型のシーケンスを使うよりこれを使う方が移植性が高くなります。例: `isinstance(s, types.StringTypes)`.

  バージョン 2.2 で追加.