オブジェクトプロトコル (object protocol)¶
-
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()を使ってください。
-
PyObject*
PyObject_GetAttr(PyObject *o, PyObject *attr_name)¶ - Return value: New reference.
オブジェクト o から、名前 attr_name の属性を取得します。成功すると属性値を返し失敗すると
NULLを返します。この関数は Python の式o.attr_nameと同じです。
-
PyObject*
PyObject_GetAttrString(PyObject *o, const char *attr_name)¶ - Return value: New reference.
オブジェクト o から、名前 attr_name の属性を取得します。成功すると属性値を返し失敗すると
NULLを返します。この関数は Python の式o.attr_nameと同じです。
-
PyObject*
PyObject_GenericGetAttr(PyObject *o, PyObject *name)¶ - Return value: New reference.
型オブジェクトの
tp_getattroスロットに置かれる、属性を取得する総称的な関数です。この関数は、 (もし存在すれば) オブジェクトの属性__dict__に加え、オブジェクトの MRO にあるクラスの辞書にあるデスクリプタを探します。 デスクリプタ (descriptor) の実装 で概要が述べられている通り、データのデスクリプタはインスタンスの属性より優先され、非データデスクリプタは後回しにされます。見付からなかった場合はAttributeErrorを送出します。
-
int
PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)¶ オブジェクト o の attr_name という名の属性に、値 v を設定します。 失敗すると例外を送出し
-1を返します; 成功すると0を返します。 この関数は Python の式o.attr_name = vと同じです。If v is
NULL, the attribute is deleted. This behaviour is deprecated in favour of usingPyObject_DelAttr(), but there are currently no plans to remove it.
-
int
PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)¶ オブジェクト o の attr_name という名の属性に、値 v を設定します。 失敗すると例外を送出し
-1を返します; 成功すると0を返します。 この関数は Python の式o.attr_name = vと同じです。If v is
NULL, the attribute is deleted, but this feature is deprecated in favour of usingPyObject_DelAttrString().
-
int
PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)¶ 属性の設定と削除を行う汎用的な関数で、型オブジェクトの
tp_setattroスロットに置かれます。 オブジェクトの MRO にあるクラスの辞書からデータディスクリプタを探し、見付かった場合はインスタンスの辞書にある属性の設定や削除よりも優先されます。 そうでない場合は、(もし存在すれば) オブジェクトの__dict__に属性を設定もしくは削除します。 成功すると0が返され、そうでない場合はAttributeErrorが送出され-1が返されます。
-
int
PyObject_DelAttr(PyObject *o, PyObject *attr_name)¶ オブジェクト 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)¶ - Return value: New reference.
__dict__デスクリプタの getter の総称的な実装です。必要な場合は、辞書を作成します。バージョン 3.3 で追加.
-
int
PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)¶ __dict__デスクリプタの setter の総称的な実装です。この実装では辞書を削除することは許されていません。バージョン 3.3 で追加.
-
PyObject*
PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)¶ - Return value: New reference.
o1 と o2 を opid に指定した演算によって比較します。 opid は
Py_LT,Py_LE,Py_EQ,Py_NE,Py_GT, またはPy_GE, のいずれかでなければならず、それぞれ<,<=,==,!=,>, および>=に対応します。この関数は Python の式o1 op o2と同じで、opが opid に対応する演算子です。成功すると比較結果の値を返し失敗するとNULLを返します。
-
int
PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)¶ o1 と o2 を opid に指定した演算によって比較します。 opid は
Py_LT,Py_LE,Py_EQ,Py_NE,Py_GT, またはPy_GE, のいずれかでなければならず、それぞれ<,<=,==,!=,>, および>=に対応します。比較結果が真ならば1を、偽ならば0を、エラーが発生すると-1を返します。この関数は Python の式o1 op o2と同じで、opが opid に対応する演算子です。
注釈
o1 と o2 が同一のオブジェクトである場合、 PyObject_RichCompareBool() は Py_EQ に対して常に 1 を返し、 Py_NE に対して常に 0 を返します。
-
PyObject*
PyObject_Repr(PyObject *o)¶ - Return value: New reference.
オブジェクト o の文字列表現を計算します。成功すると文字列表現を返し、失敗すると
NULLを返します。 Python 式repr(o)と同じです。この関数は組み込み関数repr()の処理で呼び出されます。バージョン 3.4 で変更: アクティブな例外を黙って捨てないことを保証するのに便利なように、この関数はデバッグアサーションを含むようになりました。
-
PyObject*
PyObject_ASCII(PyObject *o)¶ - Return value: New reference.
PyObject_Repr()と同様、オブジェクト o の文字列表現を計算しますが、PyObject_Repr()によって返された文字列に含まれる非 ASCII 文字を、エスケープ文字\x、\u、\Uでエスケープします。この関数は Pythoh 2 のPyObject_Repr()が返す文字列と同じ文字列を生成します。ascii()によって呼び出されます。
-
PyObject*
PyObject_Str(PyObject *o)¶ - Return value: New reference.
オブジェクト o の文字列表現を計算します。成功すると文字列表現を返し、失敗すると
NULLを返します。 Python 式str(o)と同じです。この関数は組み込み関数str()や、print()関数の処理で呼び出されます。バージョン 3.4 で変更: アクティブな例外を黙って捨てないことを保証するのに便利なように、この関数はデバッグアサーションを含むようになりました。
-
PyObject*
PyObject_Bytes(PyObject *o)¶ - Return value: New reference.
オブジェクト o のバイト列表現を計算します。失敗すると
NULLを返し、成功すると bytes オブジェクトを返します。 o が整数でないときの、 Python 式bytes(o)と同じです。bytes(o)と違って、 o が整数のときには、ゼロで初期化された bytes オブジェクトを返すのではなく TypeError が送出されます。
-
int
PyObject_IsSubclass(PyObject *derived, PyObject *cls)¶ クラス derived がクラス cls と同一であるか、そこから派生したクラスである場合は
1を返し、そうでない場合は0を返します。 エラーが起きた場合は-1を返します。cls がタプルの場合、 cls の全ての要素に対してチェックします。 少なくとも1つのチェックで
1が返ったとき、結果は1となり、それ以外のとき0になります。cls に
__subclasscheck__()メソッドがある場合は、子クラスの状態が PEP 3119 にある通りかどうかを判定するために呼ばれます。 そうでないとき derived が 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 で変更: The return type is now Py_hash_t. This is a signed integer the same size as
Py_ssize_t.
-
Py_hash_t
PyObject_HashNotImplemented(PyObject *o)¶ type(o)がハッシュ不可能であることを示すTypeErrorを設定し、-1を返します。この関数はtp_hashスロットに格納されたときには特別な扱いを受け、その type がハッシュ不可能であることをインタプリタに明示的に示します。
-
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を返します。
-
PyObject*
PyObject_Type(PyObject *o)¶ - Return value: New reference.
When o is non-
NULL, returns a type object corresponding to the object type of object o. On failure, raisesSystemErrorand returnsNULL. This is equivalent to the Python expressiontype(o). This function increments the reference count of the return value. There's really no reason to use this function instead of thePy_TYPE()function, which returns a pointer of typePyTypeObject*, except when the incremented reference count is needed.
-
int
PyObject_TypeCheck(PyObject *o, PyTypeObject *type)¶ オブジェクト o が、 type か type のサブタイプであるときに真を返します。どちらのパラメタも
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__()を使って概算の長さを、そして最後にデフォルトの値を返そうとします。 この関数は Python の式operator.length_hint(o, defaultvalue)と同じです。バージョン 3.4 で追加.
-
PyObject*
PyObject_GetItem(PyObject *o, PyObject *key)¶ - Return value: New reference.
オブジェクト key に対応する o の要素を返します。失敗すると
NULLを返します。Python の式o[key]と同じです。
-
int
PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)¶ オブジェクト key を値 v に対応付けます。 失敗すると、例外を送出し
-1を返します。成功すると0を返します。 これは Python の文o[key] = vと同等です。 この関数は v への参照を 盗み取りません 。
-
int
PyObject_DelItem(PyObject *o, PyObject *key)¶ オブジェクト o から key に関する対応付けを削除します。失敗すると
-1を返します。Python の文del o[key]と同じです。
-
PyObject*
PyObject_Dir(PyObject *o)¶ - Return value: New reference.
この関数は Python の式
dir(o)と同じで、オブジェクトの変数名に割り当てている文字列からなるリスト (空の場合もあります) を返します。エラーの場合にはNULLを返します。引数をNULLにすると、Python におけるdir()と同様に、現在のローカルな名前を返します; この場合、アクティブな実行フレームがなければNULLを返しますが、PyErr_Occurred()は偽を返します。