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 で追加.
