オブジェクトプロトコル
- int PyObject_Print(PyObject *o, FILE *fp, int flags)
- オブジェクト o をファイル fp に印刷します。 エラー時に
-1
を返します。 flags引数は、特定の印刷オプションを有効にするために使用されます。 現在サポートされている唯一のオプションはPy_PRINT_RAW
です。 指定した場合、 repr()の代わりに、オブジェクトの str()が書き込まれます。
- o の属性が attr_name の場合は、
1
を返し、それ以外の場合は0
を返します。 これは、Python式hasattr(o, attr_name)
と同等です。 この関数は常に成功します。
- int PyObject_HasAttrString(PyObject *o, const char *attr_name)
- o の属性が attr_name の場合は、
1
を返し、それ以外の場合は0
を返します。 これは、Python式hasattr(o, attr_name)
と同等です。 この関数は常に成功します。
- オブジェクト o から attr_name という名前の属性を取得します。 成功した場合は属性値を返し、失敗した場合は NULL を返します。 これは、Python式
o.attr_name
と同等です。
- オブジェクト o から attr_name という名前の属性を取得します。 成功した場合は属性値を返し、失敗した場合は NULL を返します。 これは、Python式
o.attr_name
と同等です。
- タイプオブジェクトの
tp_getattro
スロットに配置することを目的としたジェネリック属性ゲッター関数。 オブジェクトのMROのクラスのディクショナリで記述子を検索し、オブジェクトの __ dict __ (存在する場合)の属性を検索します。 記述子の実装で概説されているように、データ記述子はインスタンス属性よりも優先されますが、非データ記述子は優先されません。 それ以外の場合は、AttributeError
が発生します。
- int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
オブジェクト o の attr_name という名前の属性の値を値 v に設定します。 例外を発生させ、失敗した場合は
-1
を返します。 成功すると0
を返します。 これは、Pythonステートメントo.attr_name = v
と同等です。v が NULL の場合、属性は削除されますが、 PyObject_DelAttr()を使用するため、この機能は非推奨になりました。
- int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
オブジェクト o の attr_name という名前の属性の値を値 v に設定します。 例外を発生させ、失敗した場合は
-1
を返します。 成功すると0
を返します。 これは、Pythonステートメントo.attr_name = v
と同等です。v が NULL の場合、属性は削除されますが、 PyObject_DelAttrString()を使用するため、この機能は非推奨になりました。
- タイプオブジェクトの tp_setattro スロットに配置することを目的とした汎用属性セッターおよびデリッター関数。 オブジェクトのMRO内のクラスのディクショナリでデータ記述子を検索し、見つかった場合は、インスタンスディクショナリ内の属性の設定または削除よりも優先されます。 それ以外の場合、属性はオブジェクトの __ dict __ (存在する場合)で設定または削除されます。 成功すると、
0
が返されます。それ以外の場合は、AttributeError
が発生し、-1
が返されます。
- オブジェクト o の attr_name という名前の属性を削除します。 失敗すると
-1
を返します。 これは、Pythonステートメントdel o.attr_name
と同等です。
- int PyObject_DelAttrString(PyObject *o, const char *attr_name)
- オブジェクト o の attr_name という名前の属性を削除します。 失敗すると
-1
を返します。 これは、Pythonステートメントdel o.attr_name
と同等です。
- opid で指定された演算を使用して、 o1 と o2 の値を比較します。これは、
Py_LT
、Py_LE
のいずれかである必要があります。 、Py_EQ
、Py_NE
、Py_GT
、またはPy_GE
、<
、<=
、==
、!=
、>
、または>=
。 これは、Python式o1 op o2
と同等です。ここで、op
は、 opid に対応する演算子です。 成功した場合は比較の値を返し、失敗した場合は NULL を返します。
- opid で指定された演算を使用して、 o1 と o2 の値を比較します。これは、
Py_LT
、Py_LE
のいずれかである必要があります。 、Py_EQ
、Py_NE
、Py_GT
、またはPy_GE
、<
、<=
、==
、!=
、>
、または>=
。 エラーの場合は-1
を返し、結果がfalseの場合は0
を返し、それ以外の場合は1
を返します。 これは、Python式o1 op o2
と同等です。ここで、op
は、 opid に対応する演算子です。
- o1 と o2 の値を、 o1 が提供するルーチンを使用して比較します。存在する場合は、 o2 が提供するルーチンを使用します。 比較の結果は結果に返されます。 失敗すると
-1
を返します。 これは、Pythonステートメントresult = cmp(o1, o2)
と同等です。
- o1 と o2 の値を、 o1 が提供するルーチンを使用して比較します。存在する場合は、 o2 が提供するルーチンを使用します。 成功した場合の比較の結果を返します。 エラーの場合、返される値は未定義です。 PyErr_Occurred()を使用してエラーを検出します。 これは、Python式
cmp(o1, o2)
と同等です。
- オブジェクト o の文字列表現を計算します。 成功した場合は文字列表現を返し、失敗した場合は NULL を返します。 これは、Python式
repr(o)
と同等です。 repr()組み込み関数および逆引用符によって呼び出されます。
- オブジェクト o の文字列表現を計算します。 成功した場合は文字列表現を返し、失敗した場合は NULL を返します。 これは、Python式
str(o)
と同等です。 str()組み込み関数および print ステートメントによって呼び出されます。
- オブジェクト o のバイト表現を計算します。 2.xでは、これは PyObject_Str()の単なるエイリアスです。
- オブジェクト o のUnicode文字列表現を計算します。 成功した場合はUnicode文字列表現を返し、失敗した場合は NULL を返します。 これは、Python式
unicode(o)
と同等です。 unicode()組み込み関数によって呼び出されます。
- int PyObject_IsInstance(PyObject *inst, PyObject *cls)
inst がクラス cls または cls のサブクラスのインスタンスである場合は、
1
を返し、そうでない場合は0
を返します。 エラーの場合、-1
を返し、例外を設定します。 cls がクラスオブジェクトではなくタイプオブジェクトである場合、 inst がタイプ cls [である場合、 PyObject_IsInstance()は1
を返します。 X146X]。 cls がタプルの場合、チェックは cls のすべてのエントリに対して実行されます。 少なくとも1つのチェックが1
を返す場合、結果は1
になります。それ以外の場合は、0
になります。 inst がクラスインスタンスではなく、 cls が型オブジェクトでも、クラスオブジェクトでも、タプルでもない場合、 inst には __ class__が必要です。 属性—その属性の値と cls のクラス関係を使用して、この関数の結果を決定します。バージョン2.1の新機能。
バージョン2.2で変更: 2番目の引数としてのタプルのサポートが追加されました。
サブクラスの決定はかなり簡単な方法で行われますが、クラスシステムの拡張機能の実装者が認識したいしわが含まれています。 A
とB
がクラスオブジェクトである場合、B
はA
から直接または間接的に継承する場合、A
のサブクラスです。 どちらかがクラスオブジェクトでない場合は、より一般的なメカニズムを使用して、2つのオブジェクトのクラス関係を決定します。 B が A のサブクラスであるかどうかをテストするとき、 A が B である場合、 PyObject_IsSubclass()はtrueを返します。 A と B が異なるオブジェクトである場合、 B の __ bases __ 属性は深さ優先で Aを検索します。 — __ bases __ 属性の存在は、この決定に十分であると見なされます。
- int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
クラス派生がクラス cls と同一であるか、クラス cls から派生している場合は、
1
を返します。それ以外の場合は、0
を返します。 エラーの場合、-1
を返します。 cls がタプルの場合、チェックは cls のすべてのエントリに対して実行されます。 少なくとも1つのチェックが1
を返す場合、結果は1
になります。それ以外の場合は、0
になります。 派生または cls のいずれかが実際のクラスオブジェクト(またはタプル)でない場合、この関数は上記の汎用アルゴリズムを使用します。バージョン2.1の新機能。
バージョン2.3で変更:古いバージョンのPythonは、2番目の引数としてタプルをサポートしていませんでした。
- int PyCallable_Check(PyObject *o)
- オブジェクト o が呼び出し可能かどうかを判別します。 オブジェクトが呼び出し可能である場合は
1
を返し、そうでない場合は0
を返します。 この関数は常に成功します。
- PyObject *PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
タプル args によって指定された引数と、ディクショナリ kw によって指定された名前付き引数を使用して、呼び出し可能なPythonオブジェクト callable_object を呼び出します。 名前付き引数が必要ない場合、 kw は NULL である可能性があります。 args は NULL であってはなりません。引数が必要ない場合は、空のタプルを使用してください。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。 これは、Python式
apply(callable_object, args, kw)
またはcallable_object(*args, **kw)
と同等です。バージョン2.2の新機能。
- タプル args で引数を指定して、呼び出し可能なPythonオブジェクト callable_object を呼び出します。 引数が必要ない場合、 args は NULL である可能性があります。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。 これは、Python式
apply(callable_object, args)
またはcallable_object(*args)
と同等です。
- 可変数のC引数を使用して、呼び出し可能なPythonオブジェクト callable を呼び出します。 C引数は、 Py_BuildValue()スタイルのフォーマット文字列を使用して記述されます。 形式は NULL で、引数が指定されていないことを示します。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。 これは、Python式
apply(callable, args)
またはcallable(*args)
と同等です。PyObject *
引数のみを渡す場合は、PyObject_CallFunctionObjArgs()
の方が高速な代替手段であることに注意してください。
- オブジェクト o の method という名前のメソッドを、可変数のC引数を使用して呼び出します。 C引数は、タプルを生成する必要がある Py_BuildValue()形式の文字列によって記述されます。 形式は NULL で、引数が指定されていないことを示します。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。 これは、Python式
o.method(args)
と同等です。PyObject *
引数のみを渡す場合は、PyObject_CallMethodObjArgs()
の方が高速な代替手段であることに注意してください。
- PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
可変数の
PyObject*
引数を使用して、呼び出し可能なPythonオブジェクト callable を呼び出します。 引数は、 NULL が後に続く可変数のパラメーターとして提供されます。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。バージョン2.2の新機能。
- PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
オブジェクト o のメソッドを呼び出します。ここで、メソッドの名前は name のPython文字列オブジェクトとして指定されます。 可変数の
PyObject*
引数で呼び出されます。 引数は、 NULL が後に続く可変数のパラメーターとして提供されます。 成功した場合は呼び出しの結果を返し、失敗した場合は NULL を返します。バージョン2.2の新機能。
- long PyObject_Hash(PyObject *o)
- オブジェクト o のハッシュ値を計算して返します。 失敗した場合は、
-1
を返します。 これは、Python式hash(o)
と同等です。
- long PyObject_HashNotImplemented(PyObject *o)
TypeError
を設定して、type(o)
がハッシュ可能ではないことを示し、-1
を返します。 この関数は、tp_hash
スロットに格納されると特別な扱いを受け、型がハッシュ可能ではないことをインタープリターに明示的に示すことができます。バージョン2.6の新機能。
- int PyObject_IsTrue(PyObject *o)
- オブジェクト o が真であると見なされる場合は
1
を返し、そうでない場合は0
を返します。 これは、Python式not not o
と同等です。 失敗した場合は、-1
を返します。
- int PyObject_Not(PyObject *o)
- オブジェクト o が真であると見なされる場合は
0
を返し、そうでない場合は1
を返します。 これは、Python式not o
と同等です。 失敗した場合は、-1
を返します。
- o が NULL 以外の場合、オブジェクト o のオブジェクトタイプに対応するタイプオブジェクトを返します。 失敗すると、
SystemError
を発生させ、 NULL を返します。 これは、Python式type(o)
と同等です。 この関数は、戻り値の参照カウントをインクリメントします。 増分参照カウントが必要な場合を除いて、タイプPyTypeObject*
のポインターを返す一般的な式o->ob_type
の代わりにこの関数を使用する理由は実際にはありません。
- int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
オブジェクト o がタイプタイプまたはサブタイプタイプの場合はtrueを返します。 両方のパラメーターは、 NULL 以外である必要があります。
バージョン2.2の新機能。
- Py_ssize_t PyObject_Length(PyObject *o)
Py_ssize_t PyObject_Size(PyObject *o)
オブジェクト o の長さを返します。 オブジェクト o がシーケンスプロトコルとマッピングプロトコルのいずれかを提供する場合、シーケンスの長さが返されます。 エラーの場合、
-1
が返されます。 これは、Python式len(o)
と同等です。バージョン2.5で変更:これらの関数は
int
タイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- 失敗した場合、オブジェクト key または NULL に対応する o の要素を返します。 これは、Python式
o[key]
と同等です。
- オブジェクトキーを値 v にマップします。 例外を発生させ、失敗した場合は
-1
を返します。 成功すると0
を返します。 これは、Pythonステートメントo[key] = v
と同等です。
- キーのマッピングを o から削除します。 失敗すると
-1
を返します。 これは、Pythonステートメントdel o[key]
と同等です。
- int PyObject_AsFileDescriptor(PyObject *o)
- Pythonオブジェクトからファイル記述子を派生させます。 オブジェクトが整数または長整数の場合、その値が返されます。 そうでない場合は、オブジェクトの
fileno()
メソッドが存在する場合は呼び出されます。 メソッドは整数または長整数を返す必要があり、ファイル記述子値として返されます。 失敗すると-1
を返します。
- これは、Python式
dir(o)
と同等であり、オブジェクト引数に適した文字列の(空の可能性がある)リストを返します。エラーが発生した場合は NULL を返します。 引数が NULL の場合、これはPythondir()
に似ており、現在のローカルの名前を返します。 この場合、アクティブな実行フレームがない場合、 NULL が返されますが、 PyErr_Occurred()はfalseを返します。
- これは、Python式
iter(o)
と同等です。 オブジェクト引数の新しいイテレータを返します。オブジェクトがすでにイテレータである場合は、オブジェクト自体を返します。 オブジェクトを反復できない場合は、TypeError
を発生させ、 NULL を返します。