26.10.1 型とメンバ

getmembers()は、クラスやモジュールなどのオブジェクトからメンバを取得します。 名前が``is''で始まる 11 個の関数は、getmembers()の2番目の引数として利用する事ができますし、以下のような特殊属性を参照できるかどうか調べる時にも使えます。

Type Attribute Description Notes
module __doc__ ドキュメント文字列
__file__ ファイル名(組み込みモジュールには存在しない
class __doc__ ドキュメント文字列
__module__ クラスを定義しているモジュールの名前
method __doc__ ドキュメント文字列
__name__ メソッドが定義された時の名前
im_class メソッドを呼び出すために必要なクラスオブジェクト (1)
im_func メソッドを実装している関数オブジェクト
im_self メソッドに結合しているインスタンス、またはNone
function __doc__ ドキュメント文字列
__name__ 関数が定義された時の名前
func_code 関数をコンパイルしたバイトコードを格納するコード オブジェクト
func_defaults 引数のデフォルト値のタプル
func_doc (__doc__と同じ)
func_globals 関数を定義した時のグローバル名前空間
func_name (__name__と同じ)
traceback tb_frame このレベルのフレームオブジェクト
tb_lasti 最後に実行しようとしたバイトコード中のインストラク ションを示すインデックス。
tb_lineno 現在のPythonソースコードの行番号
tb_next このオブジェクトの内側(このレベルから呼び出された) のトレースバックオブジェクト
frame f_back 外側 (このフレームを呼び出した)のフレームオブジ ェクト
f_builtins このフレームで参照している組み込み名前空間
f_code このフレームで実行しているコードオブジェクト
f_exc_traceback このフレームで例外が発生した場合にはトレー スバックオブジェクト。それ以外ならNone
f_exc_type このフレームで例外が発生した場合には例外型。それ 以外ならNone
f_exc_value このフレームで例外が発生した場合には例外の値。 それ以外ならNone
f_globals このフレームで参照しているグローバル名前空間
f_lasti 最後に実行しようとしたバイトコードのインデックス。
f_lineno 現在のPythonソースコードの行番号
f_locals このフレームで参照しているローカル名前空間
f_restricted 制限実行モードなら1、それ以外なら0
f_trace このフレームのトレース関数、またはNone
code co_argcount 引数の数(*、**引数は含まない)
co_code コンパイルされたバイトコードそのままの文字列
co_consts バイトコード中で使用している定数のタプル
co_filename コードオブジェクトを生成したファイルのファイル名
co_firstlineno Pythonソースコードの先頭行
co_flags 以下の値の組み合わせ: 1=optimized | 2=newlocals | 4=*arg | 8=**arg
co_lnotab 文字列にエンコードした、行番号->バイトコード インデックスへの変換表
co_name コードオブジェクトが定義されたときの名前
co_names ローカル変数名のタプル
co_nlocals ローカル変数の数
co_stacksize 必要な仮想機械のスタックスペース
co_varnames 引数名とローカル変数名のタプル
builtin __doc__ ドキュメント文字列
__name__ 関数、メソッドの元々の名前
__self__ メソッドが結合しているインスタンス、またはNone

Note:

(1)
バージョン 2.2 で 変更 された仕様: im_class 従来、メソッドを定義しているクラスを参 照するために使用していた

getmembers( object[, predicate])
オブジェクトの全メンバを、(名前, 値)の組み合わせのリストで返します。リ ストはメンバ名でソートされています。predicateが指定されている場 合、predicateの戻り値が真となる値のみを返します。

getmoduleinfo( path)
pathで指定したファイルがモジュールであればそのモジュールがPython でどのように解釈されるかを示す(name, suffix, mode, mtype)のタプルを返し、モジュールでなければ Noneを返します。nameはパッケージ名を含まないモジュール 名、suffixはファイル名からモジュール名を除いた残りの部分(ドット による拡張子とは限らない)、modeopen()で指定されるフ ァイルモード('r'または'rb')、mtypeimpで定義している整定数のいずれかが指定されます。モジュール タイプに付いてはimpを参照してください。

getmodulename( path)
pathで指定したファイルの、パッケージ名を含まないモジュール名を返 します。この処理は、インタープリタがモジュールを検索する時と同じアルゴ リズムで行われます。ファイルがこのアルゴリズムで見つからない場合には Noneが返ります。

ismodule( object)
オブジェクトがモジュールの場合は真を返します。

isclass( object)
オブジェクトがクラスの場合は真を返します。

ismethod( object)
オブジェクトがメソッドの場合は真を返します。

isfunction( object)
オブジェクトがPythonの関数、または無名(lambda)関数の場合は真を返します。

istraceback( object)
オブジェクトがトレースバックの場合は真を返します。

isframe( object)
オブジェクトがフレームの場合は真を返します。

iscode( object)
オブジェクトがコードの場合は真を返します。

isbuiltin( object)
オブジェクトが組み込み関数の場合は真を返します。

isroutine( object)
オブジェクトがユーザ定義か組み込みの関数・メソッドの場合は真を返します。

ismethoddescriptor( object)
オブジェクトがメソッドデスクリプタの場合に真を返しますが、 ismethod()、isclass() または isfunction() が真の場合には真を返しません。

この機能は Python 2.2 から新たに追加されたもので、例えば int.__add__ は真 になります。 このテストをパスするオブジェクトは __get__ 属性を持ちますが __set__ 属性を持ちません。しかしそれ以上に属性のセットには様々なものがあります。 __name__ は通常見分けることが可能ですし、__doc__ も時には可能です。

デスクリプタを使って実装されたメソッドで、上記のいずれかのテストもパスして いるものは、 ismethoddescriptor() では偽を返します。これは単に 他のテストの方がもっと確実だからです - 例えば、ismethod() をパス したオブジェクトは im_func 属性 (など) を持っていると期待できます。

isdatadescriptor( object)
オブジェクトがデータデスクリプタの場合に真を返します。

データデスクリプタは __get__ および __set__ 属性の両方を持ちます。 データデスクリプタの例は (Python 上で定義された) プロパティや getset やメンバです。後者のふたつは C で定義されており、 個々の型に特有のテストも行います。そのため、Python の実装よりもより確 実確実です。通常、データデスクリプタは __name__ や __doc__ 属性を持ちます (プロパティ、 getset 、メンバは両方の属性を持っています) が、保証されているわけではありません。 バージョン 2.3 で 新たに追加 された仕様です。

isgetsetdescriptor( object)
オブジェクトがgetsetデスクリプタの場合に真を返します。

getsetとはPyGetSetDef構造体を用いて拡張モジュールで定義されてい る属性のことです。Pythonの実装の場合はそのような型はないので、このメソッ ドは常にFalseを返します。 バージョン 2.5 で 新たに追加 された仕様です。

ismemberdescriptor( object)
オブジェクトがメンバデスクリプタの場合に真を返します。

メンバデスクリプタとはPyMemberDef構造体を用いて拡張モジュールで 定義されている属性のことです。Pythonの実装の場合はそのような型はないの で、このメソッドは常にFalseを返します。 バージョン 2.5 で 新たに追加 された仕様です。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。