このモジュールは標準の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)
このモジュールは以下の名前を定義しています。
None の型です。
複素数の型です(e.g. 1.0j)。 Pythonが複素数のサポートなしでコンパイルされていた場合には定義されません。
Unicode文字列の型です(e.g. u'Spam')。 Pythonがユニコードのサポートなしでコンパイルされていた場合には定義されません。 組み込みの Unicode のエイリアスになります。
DictType の別名です。
ユーザー定義の、古いスタイルのクラスの型です。
ユーザー定義のクラスのインスタンスの型です。
ユーザー定義のクラスのインスタンスのメソッドの型です。
MethodType の別名です。
len() や sys.exit() のような組み込み関数や、組み込み型のメソッドの型です。 (ここでは、”組み込み”という単語を、”Cで書かれた”という意味で使っています)
モジュールの型です。
Ellipsis の型です。
sys.exc_traceback に含まれるようなトレースバックオブジェクトの型です。
フレームオブジェクトの型です。トレースバックオブジェクト tb の tb.tb_frame などです。
TypeType.__dict__ のような dictへのプロキシ型です。
NotImplemented の型です。
FrameType.f_locals や array.array.typecode のような、拡張モジュールにおいて PyGetSetDef によって定義されたオブジェクトの型です。 この型はオブジェクト属性のディスクリプタとして利用されます。 property 型と同じ目的を持った型ですが、こちらは拡張モジュールで定義された型のためのものです。
バージョン 2.5 で追加.
datetime.timedelta.days のような、拡張モジュールにおいて PyMemberDef によって定義されたオブジェクトの型です。 この型は、標準の変換関数を利用するような、Cのシンプルなデータメンバで利用されます。 property 型と同じ目的を持った型ですが、こちらは拡張モジュールで定義された型のためのものです。 Pythonの他の実装では、この型は GetSetDescriptorType と同一かもしれません。
バージョン 2.5 で追加.
文字列型のチェックを簡単にするための StringType と UnicodeType を含むシーケンスです。 UnicodeType は実行中の版のPythonに含まれている場合にだけ含まれるの で、2つの文字列型のシーケンスを使うよりこれを使う方が移植性が高くなります。例: isinstance(s, types.StringTypes).
バージョン 2.2 で追加.