オブジェクトプロトコル
- PyObject *Py_NotImplemented
NotImplemented
シングルトン。指定されたタイプの組み合わせに対して操作が実装されていないことを通知するために使用されます。
- Py_RETURN_NOTIMPLEMENTED
- C関数内から Py_NotImplemented を返すことを適切に処理します(つまり、NotImplementedの参照カウントをインクリメントして返します)。
- int PyObject_Print(PyObject *o, FILE *fp, int flags)
- オブジェクト o をファイル fp に印刷します。 エラー時に
-1
を返します。 flags引数は、特定の印刷オプションを有効にするために使用されます。 現在サポートされている唯一のオプションはPy_PRINT_RAW
です。 指定した場合、 repr()の代わりに、オブジェクトの str()が書き込まれます。
- int PyObject_HasAttr(PyObject *o, PyObject *attr_name)
o の属性が attr_name の場合は、
1
を返し、それ以外の場合は0
を返します。 これは、Python式hasattr(o, attr_name)
と同等です。 この関数は常に成功します。__getattr__()
および__getattribute__()
メソッドの呼び出し中に発生する例外は抑制されることに注意してください。 エラー報告を取得するには、代わりに PyObject_GetAttr()を使用してください。
- int PyObject_HasAttrString(PyObject *o, const char *attr_name)
o の属性が attr_name の場合は、
1
を返し、それ以外の場合は0
を返します。 これは、Python式hasattr(o, attr_name)
と同等です。 この関数は常に成功します。__getattr__()
および__getattribute__()
メソッドを呼び出して一時文字列オブジェクトを作成しているときに発生する例外は抑制されることに注意してください。 エラー報告を取得するには、代わりに PyObject_GetAttrString()を使用してください。
- オブジェクト 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
と同等です。
- PyObject *PyObject_GenericGetDict(PyObject *o, void *context)
__dict__
記述子のゲッターの汎用実装。 必要に応じて辞書を作成します。バージョン3.3の新機能。
- int PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)
__dict__
記述子のセッターの汎用実装。 この実装では、辞書を削除できません。バージョン3.3の新機能。
- 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 に対応する演算子です。
- PyObject *PyObject_Repr(PyObject *o)
オブジェクト o の文字列表現を計算します。 成功した場合は文字列表現を返し、失敗した場合は
NULL
を返します。 これは、Python式repr(o)
と同等です。 repr()組み込み関数によって呼び出されます。バージョン3.4で変更:この関数には、アクティブな例外をサイレントに破棄しないようにするためのデバッグアサーションが含まれるようになりました。
- PyObject *PyObject_ASCII(PyObject *o)
PyObject_Repr()として、オブジェクト o の文字列表現を計算しますが、 PyObject_Repr()によって返される文字列内の非ASCII文字を
\x
、\u
、または\U
はエスケープします。 これにより、Python2の PyObject_Repr()によって返される文字列と同様の文字列が生成されます。 ascii()組み込み関数によって呼び出されます。
- PyObject *PyObject_Str(PyObject *o)
オブジェクト o の文字列表現を計算します。 成功した場合は文字列表現を返し、失敗した場合は
NULL
を返します。 これは、Python式str(o)
と同等です。 str()組み込み関数によって呼び出されるため、 print()関数によって呼び出されます。バージョン3.4で変更:この関数には、アクティブな例外をサイレントに破棄しないようにするためのデバッグアサーションが含まれるようになりました。
- オブジェクト o のバイト表現を計算します。
NULL
は失敗時に返され、bytesオブジェクトは成功時に返されます。 これは、 o が整数でない場合、Python式bytes(o)
と同等です。bytes(o)
とは異なり、 o がゼロで初期化されたバイトオブジェクトではなく整数の場合、TypeErrorが発生します。
- int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
クラス派生がクラス cls と同一であるか、クラス cls から派生している場合は、
1
を返します。それ以外の場合は、0
を返します。 エラーの場合は、-1
を返します。cls がタプルの場合、チェックは cls のすべてのエントリに対して実行されます。 少なくとも1つのチェックが
1
を返す場合、結果は1
になります。それ以外の場合は、0
になります。cls に __ subclasscheck __()メソッドがある場合、 PEP 3119 で説明されているように、サブクラスのステータスを判別するために呼び出されます。 それ以外の場合、派生は、直接または間接のサブクラスである場合、 cls のサブクラスです。
cls.__mro__
に含まれています。通常、クラスオブジェクトのみ、つまり type または派生クラスのインスタンスは、クラスと見なされます。 ただし、オブジェクトは
__bases__
属性(基本クラスのタプルである必要があります)を持つことでこれをオーバーライドできます。
- int PyObject_IsInstance(PyObject *inst, PyObject *cls)
inst がクラス cls または cls のサブクラスのインスタンスである場合は、
1
を返し、そうでない場合は0
を返します。 エラーの場合、-1
を返し、例外を設定します。cls がタプルの場合、チェックは cls のすべてのエントリに対して実行されます。 少なくとも1つのチェックが
1
を返す場合、結果は1
になります。それ以外の場合は、0
になります。cls に __ instancecheck __()メソッドがある場合、 PEP 3119 で説明されているように、サブクラスのステータスを判別するために呼び出されます。 それ以外の場合、 inst は、そのクラスが cls のサブクラスである場合、 cls のインスタンスです。
インスタンス inst は、
__class__
属性を持つことにより、そのクラスと見なされるものをオーバーライドできます。オブジェクト cls は、
__bases__
属性(基本クラスのタプルである必要があります)を持つことにより、クラスと見なされる場合、およびその基本クラスが何であるかをオーバーライドできます。
- Py_hash_t PyObject_Hash(PyObject *o)
オブジェクト o のハッシュ値を計算して返します。 失敗した場合は、
-1
を返します。 これは、Python式hash(o)
と同等です。バージョン3.2で変更:戻りタイプはPy_hash_tになりました。 これは、Py_ssize_tと同じサイズの符号付き整数です。
- Py_hash_t PyObject_HashNotImplemented(PyObject *o)
- TypeError を設定して、
type(o)
がハッシュ可能ではないことを示し、-1
を返します。 この関数は、tp_hash
スロットに格納されると特別な扱いを受け、型がハッシュ可能ではないことをインタープリターに明示的に示すことができます。
- 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
以外である必要があります。
- Py_ssize_t PyObject_Size(PyObject *o)
Py_ssize_t PyObject_Length(PyObject *o)
- オブジェクト o の長さを返します。 オブジェクト o がシーケンスプロトコルとマッピングプロトコルのいずれかを提供する場合、シーケンスの長さが返されます。 エラーの場合、
-1
が返されます。 これは、Python式len(o)
と同等です。
- Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue)
オブジェクト o の推定長を返します。 最初に実際の長さを返し、次に __ length_hint __()を使用して見積もりを返し、最後にデフォルト値を返します。 エラー時に
-1
を返します。 これは、Python式operator.length_hint(o, defaultvalue)
と同等です。バージョン3.4の新機能。
- 失敗した場合、オブジェクトキーまたは
NULL
に対応する o の要素を返します。 これは、Python式o[key]
と同等です。
- オブジェクトキーを値 v にマップします。 例外を発生させ、失敗した場合は
-1
を返します。 成功すると0
を返します。 これは、Pythonステートメントo[key] = v
と同等です。 この関数は v への参照を盗みません。
- オブジェクトキーのマッピングをオブジェクト o から削除します。 失敗した場合は
-1
を返します。 これは、Pythonステートメントdel o[key]
と同等です。
- これは、Python式
dir(o)
と同等であり、オブジェクト引数に適した文字列の(空の可能性がある)リストを返します。エラーが発生した場合はNULL
を返します。 引数がNULL
の場合、これはPythondir()
に似ており、現在のローカルの名前を返します。 この場合、アクティブな実行フレームがない場合、NULL
が返されますが、 PyErr_Occurred()はfalseを返します。
- これは、Python式
iter(o)
と同等です。 オブジェクト引数の新しいイテレータを返します。オブジェクトがすでにイテレータである場合は、オブジェクト自体を返します。 オブジェクトを反復できない場合は、 TypeError を発生させ、NULL
を返します。