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:
object[, predicate]) |
path) |
(name, suffix,
mode, mtype)
のタプルを返し、モジュールでなければ
None
を返します。nameはパッケージ名を含まないモジュール
名、suffixはファイル名からモジュール名を除いた残りの部分(ドット
による拡張子とは限らない)、modeはopen()で指定されるフ
ァイルモード('r'
または'rb'
)、mtypeは
impで定義している整定数のいずれかが指定されます。モジュール
タイプに付いてはimpを参照してください。
path) |
None
が返ります。
object) |
object) |
object) |
object) |
object) |
object) |
object) |
object) |
object) |
object) |
この機能は Python 2.2 から新たに追加されたもので、例えば int.__add__ は真 になります。 このテストをパスするオブジェクトは __get__ 属性を持ちますが __set__ 属性を持ちません。しかしそれ以上に属性のセットには様々なものがあります。 __name__ は通常見分けることが可能ですし、__doc__ も時には可能です。
デスクリプタを使って実装されたメソッドで、上記のいずれかのテストもパスして いるものは、 ismethoddescriptor() では偽を返します。これは単に 他のテストの方がもっと確実だからです - 例えば、ismethod() をパス したオブジェクトは im_func 属性 (など) を持っていると期待できます。
object) |
データデスクリプタは __get__ および __set__ 属性の両方を持ちます。 データデスクリプタの例は (Python 上で定義された) プロパティや getset やメンバです。後者のふたつは C で定義されており、 個々の型に特有のテストも行います。そのため、Python の実装よりもより確 実確実です。通常、データデスクリプタは __name__ や __doc__ 属性を持ちます (プロパティ、 getset 、メンバは両方の属性を持っています) が、保証されているわけではありません。 バージョン 2.3 で 新たに追加 された仕様です。
object) |
getsetとはPyGetSetDef
構造体を用いて拡張モジュールで定義されてい
る属性のことです。Pythonの実装の場合はそのような型はないので、このメソッ
ドは常にFalse
を返します。
バージョン 2.5 で 新たに追加 された仕様です。
object) |
メンバデスクリプタとはPyMemberDef
構造体を用いて拡張モジュールで
定義されている属性のことです。Pythonの実装の場合はそのような型はないの
で、このメソッドは常にFalse
を返します。
バージョン 2.5 で 新たに追加 された仕様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。