\section{\module{types} ---
         組み込み型の名前}

\declaremodule{standard}{types}
\modulesynopsis{組み込み型の名前}


このモジュールは標準のPythonインタプリタで使われているオブジェクト
の型について、名前を定義しています(拡張モジュールで定義されている型を除
く)。このモジュールは\code{listiterator}型のようなプロセス中に例外
をふくまないので、\samp{from types import *}のように使っても安全です。このモジュールの
将来のバージョンで追加される名前は、\samp{Type}で終わる予定です。

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

\begin{verbatim}
from types import *
def delete(mylist, item):
    if type(item) is IntType:
       del mylist[item]
    else:
       mylist.remove(item)
\end{verbatim}

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

\begin{verbatim}
def delete(mylist, item):
    if isinstance(item, int):
       del mylist[item]
    else:
       mylist.remove(item)
\end{verbatim}

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

\begin{datadesc}{NoneType}
 \code{None}の型です。
\end{datadesc}

\begin{datadesc}{TypeType}
typeオブジェクトの型です (\function{type()}\bifuncindex{type}などによって返
 されます)。
\end{datadesc}

\begin{datadesc}{BooleanType}
%The type of the \class{bool} values \code{True} and \code{False}; this
%is an alias of the built-in \function{bool()} function.
%\versionadded{2.3}
\class{bool}の\code{True}と\code{False}の型です。これは組み込み関数の
 \function{bool()}のエイリアスです。
\end{datadesc}

\begin{datadesc}{IntType}
整数の型です(e.g. \code{1})。
\end{datadesc}

\begin{datadesc}{LongType}
長整数の型です(e.g. \code{1L})。
\end{datadesc}

\begin{datadesc}{FloatType}
浮動小数点数の型です(e.g. \code{1.0})。
\end{datadesc}

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

\begin{datadesc}{StringType}
文字列の型です(e.g. \code{'Spam'})。
\end{datadesc}

\begin{datadesc}{UnicodeType}
Unicode文字列の型です(e.g. \code{u'Spam'})。
Pythonがユニコードのサポートなしでコンパイルされていた場合には
定義されません。
\end{datadesc}

\begin{datadesc}{TupleType}
タプルの型です(e.g. \code{(1, 2, 3, 'Spam')})。
\end{datadesc}

\begin{datadesc}{ListType}
リストの型です(e.g. \code{[0, 1, 2, 3]})。
\end{datadesc}

\begin{datadesc}{DictType}
辞書の型です(e.g. \code{\{'Bacon': 1, 'Ham': 0\}})。
\end{datadesc}

\begin{datadesc}{DictionaryType}
\code{DictType}の別名です。
\end{datadesc}

\begin{datadesc}{FunctionType}
ユーザー定義の関数またはlambdaの型です。
\end{datadesc}

\begin{datadesc}{LambdaType}
\code{FunctionType}の別名です。
\end{datadesc}

\begin{datadesc}{GeneratorType}
ジェネレータ関数の呼び出しによって生成されたイテレータオブジェクトの型で
 す。
\versionadded{2.2}
\end{datadesc}

\begin{datadesc}{CodeType}
\function{compile()}\bifuncindex{compile}関数などによって返されるコード
 オブジェクトの型です。
\end{datadesc}

\begin{datadesc}{ClassType}
ユーザー定義のクラスの型です。
\end{datadesc}

\begin{datadesc}{InstanceType}
ユーザー定義のクラスのインスタンスの型です。
\end{datadesc}

\begin{datadesc}{MethodType}
ユーザー定義のクラスのインスタンスのメソッドの型です。
\end{datadesc}

\begin{datadesc}{UnboundMethodType}
\code{MethodType}の別名です。
\end{datadesc}

\begin{datadesc}{BuiltinFunctionType}
\function{len()} や \function{sys.exit()}のような組み込み関数の型です。
\end{datadesc}

\begin{datadesc}{BuiltinMethodType}
\code{BuiltinFunction}の別名です。
\end{datadesc}

\begin{datadesc}{ModuleType}
モジュールの型です。
\end{datadesc}

\begin{datadesc}{FileType}
\code{sys.stdout}のようなopenされたファイルオブジェクトの型です。
\end{datadesc}

\begin{datadesc}{XRangeType}
\function{xrange()}\bifuncindex{xrange}関数によって返されるrangeオブジェ
 クトの型です。
\end{datadesc}

\begin{datadesc}{SliceType}
\function{slice()}\bifuncindex{slice}関数によって返されるオブジェクトの
 型です。
\end{datadesc}

\begin{datadesc}{EllipsisType}
\code{Ellipsis}の型です。
\end{datadesc}

\begin{datadesc}{TracebackType}
\code{sys.exc_traceback}に含まれるようなトレースバックオブジェクトの型です。
\end{datadesc}

\begin{datadesc}{FrameType}
フレームオブジェクトの型です。
トレースバックオブジェクト\code{tb}の\code{tb.tb_frame}などです。
\end{datadesc}

\begin{datadesc}{BufferType}
\function{buffer()}\bifuncindex{buffer}関数によって作られるバッファオブ
 ジェクトの型です。
\end{datadesc}


\begin{datadesc}{DictProxyType}
\code{TypeType.__dict__} のような dictへのプロキシ型です。

\end{datadesc}

\begin{datadesc}{NotImplementedType}
\code{NotImplemented}の型です。
\end{datadesc}

\begin{datadesc}{GetSetDescriptorType}
\code{FrameType.f_locals} や \code{array.array.typecode} のような
\code{PyGetSetDef} のある 拡張モジュールで定義されたオブジェクトの型です。
この定数は上のような拡張型がないPythonでは定義されません。
ポータブルなコードでは\code{hasattr(types, 'GetSetDescriptorType')}を
使用してください。
\versionadded{2.5}
\end{datadesc}

\begin{datadesc}{MemberDescriptorType}
\code {datetime.timedelta.days} のような \code{PyMemberDef}のある
拡張モジュールで定義されたオブジェクトの型です。
この定数は上のような拡張型がないPythonでは定義されません。
ポータブルなコードでは\code{hasattr(types, 'MemberDescriptorType')}を
使用してください。
\versionadded{2.5}
\end{datadesc}

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