オブジェクトプロトコル (object protocol)¶
-
PyObject *Py_NotImplemented¶
与えられたオブジェクトとメソッドの引数の型の組み合わせの処理が未実装である印として使われる、
未実装 (NotImplemented)
シングルトン。
-
Py_RETURN_NOTIMPLEMENTED¶
Properly handle returning
Py_NotImplemented
from within a C function (that is, create a new strong reference toNotImplemented
and return it).
-
Py_PRINT_RAW¶
Flag to be used with multiple functions that print the object (like
PyObject_Print()
andPyFile_WriteObject()
). If passed, these function would use thestr()
of the object instead of therepr()
.
-
int PyObject_Print(PyObject *o, FILE *fp, int flags)¶
Print an object o, on file fp. Returns
-1
on error. The flags argument is used to enable certain printing options. The only option currently supported isPy_PRINT_RAW
; if given, thestr()
of the object is written instead of therepr()
.
-
int PyObject_HasAttr(PyObject *o, PyObject *attr_name)¶
- 次に属します: Stable ABI.
Returns
1
if o has the attribute attr_name, and0
otherwise. This is equivalent to the Python expressionhasattr(o, attr_name)
. This function always succeeds.注釈
Exceptions that occur when this calls
__getattr__()
and__getattribute__()
methods are silently ignored. For proper error handling, usePyObject_GetAttr()
instead.
-
int PyObject_HasAttrString(PyObject *o, const char *attr_name)¶
- 次に属します: Stable ABI.
This is the same as
PyObject_HasAttr()
, but attr_name is specified as a const char* UTF-8 encoded bytes string, rather than a PyObject*.注釈
Exceptions that occur when this calls
__getattr__()
and__getattribute__()
methods or while creating the temporarystr
object are silently ignored. For proper error handling, usePyObject_GetAttrString()
instead.
-
PyObject *PyObject_GetAttr(PyObject *o, PyObject *attr_name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
オブジェクト o から、名前 attr_name の属性を取得します。成功すると属性値を返し失敗すると
NULL
を返します。この関数は Python の式o.attr_name
と同じです。
-
PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
This is the same as
PyObject_GetAttr()
, but attr_name is specified as a const char* UTF-8 encoded bytes string, rather than a PyObject*.
-
PyObject *PyObject_GenericGetAttr(PyObject *o, PyObject *name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
型オブジェクトの
tp_getattro
スロットに置かれる、属性を取得する総称的な関数です。この関数は、 (もし存在すれば) オブジェクトの属性__dict__
に加え、オブジェクトの MRO にあるクラスの辞書にあるデスクリプタを探します。 デスクリプタ (descriptor) の実装 で概要が述べられている通り、データのデスクリプタはインスタンスの属性より優先され、非データデスクリプタは後回しにされます。見付からなかった場合はAttributeError
を送出します。
-
int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)¶
- 次に属します: Stable ABI.
オブジェクト 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)¶
- 次に属します: Stable ABI.
This is the same as
PyObject_SetAttr()
, but attr_name is specified as a const char* UTF-8 encoded bytes string, rather than a PyObject*.v が
NULL
の場合は属性が削除されますが、この機能は非推奨でありPyObject_DelAttrString()
を使うのが望ましいです。The number of different attribute names passed to this function should be kept small, usually by using a statically allocated string as attr_name. For attribute names that aren't known at compile time, prefer calling
PyUnicode_FromString()
andPyObject_SetAttr()
directly. For more details, seePyUnicode_InternFromString()
, which may be used internally to create a key object.
-
int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)¶
- 次に属します: Stable ABI.
属性の設定と削除を行う汎用的な関数で、型オブジェクトの
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)¶
This is the same as
PyObject_DelAttr()
, but attr_name is specified as a const char* UTF-8 encoded bytes string, rather than a PyObject*.The number of different attribute names passed to this function should be kept small, usually by using a statically allocated string as attr_name. For attribute names that aren't known at compile time, prefer calling
PyUnicode_FromString()
andPyObject_DelAttr()
directly. For more details, seePyUnicode_InternFromString()
, which may be used internally to create a key object for lookup.
-
PyObject *PyObject_GenericGetDict(PyObject *o, void *context)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.10 より).
__dict__
デスクリプタの getter の総称的な実装です。必要な場合は、辞書を作成します。This function may also be called to get the
__dict__
of the object o. PassNULL
for context when calling it. Since this function may need to allocate memory for the dictionary, it may be more efficient to callPyObject_GetAttr()
when accessing an attribute on the object.On failure, returns
NULL
with an exception set.Added in version 3.3.
-
int PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)¶
- 次に属します: Stable ABI (バージョン 3.7 より).
__dict__
デスクリプタの setter の総称的な実装です。この実装では辞書を削除することは許されていません。Added in version 3.3.
-
PyObject **_PyObject_GetDictPtr(PyObject *obj)¶
Return a pointer to
__dict__
of the object obj. If there is no__dict__
, returnNULL
without setting an exception.This function may need to allocate memory for the dictionary, so it may be more efficient to call
PyObject_GetAttr()
when accessing an attribute on the object.
-
PyObject *PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
Compare the values of o1 and o2 using the operation specified by opid, which must be one of
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
, orPy_GE
, corresponding to<
,<=
,==
,!=
,>
, or>=
respectively. This is the equivalent of the Python expressiono1 op o2
, whereop
is the operator corresponding to opid. Returns the value of the comparison on success, orNULL
on failure.
-
int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)¶
- 次に属します: Stable ABI.
Compare the values of o1 and o2 using the operation specified by opid, like
PyObject_RichCompare()
, but returns-1
on error,0
if the result is false,1
otherwise.
注釈
If o1 and o2 are the same object, PyObject_RichCompareBool()
will always return 1
for Py_EQ
and 0
for Py_NE
.
-
PyObject *PyObject_Format(PyObject *obj, PyObject *format_spec)¶
- 次に属します: Stable ABI.
Format obj using format_spec. This is equivalent to the Python expression
format(obj, format_spec)
.format_spec may be
NULL
. In this case the call is equivalent toformat(obj)
. Returns the formatted string on success,NULL
on failure.
-
PyObject *PyObject_Repr(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
オブジェクト o の文字列表現を計算します。成功すると文字列表現を返し、失敗すると
NULL
を返します。 Python 式repr(o)
と同じです。この関数は組み込み関数repr()
の処理で呼び出されます。バージョン 3.4 で変更: アクティブな例外を黙って捨てないことを保証するのに便利なように、この関数はデバッグアサーションを含むようになりました。
-
PyObject *PyObject_ASCII(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
PyObject_Repr()
と同様、オブジェクト o の文字列表現を計算しますが、PyObject_Repr()
によって返された文字列に含まれる非 ASCII 文字を、エスケープ文字\x
、\u
、\U
でエスケープします。この関数は Pythoh 2 のPyObject_Repr()
が返す文字列と同じ文字列を生成します。ascii()
によって呼び出されます。
-
PyObject *PyObject_Str(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
オブジェクト o の文字列表現を計算します。成功すると文字列表現を返し、失敗すると
NULL
を返します。 Python 式str(o)
と同じです。この関数は組み込み関数str()
や、print()
関数の処理で呼び出されます。バージョン 3.4 で変更: アクティブな例外を黙って捨てないことを保証するのに便利なように、この関数はデバッグアサーションを含むようになりました。
-
PyObject *PyObject_Bytes(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
オブジェクト o のバイト列表現を計算します。失敗すると
NULL
を返し、成功すると bytes オブジェクトを返します。 o が整数でないときの、 Python 式bytes(o)
と同じです。bytes(o)
と違って、 o が整数のときには、ゼロで初期化された bytes オブジェクトを返すのではなく TypeError が送出されます。
-
int PyObject_IsSubclass(PyObject *derived, PyObject *cls)¶
- 次に属します: Stable ABI.
クラス derived がクラス cls と同一であるか、そこから派生したクラスである場合は
1
を返し、そうでない場合は0
を返します。 エラーが起きた場合は-1
を返します。cls がタプルの場合、 cls の全ての要素に対してチェックします。 少なくとも1つのチェックで
1
が返ったとき、結果は1
となり、それ以外のとき0
になります。If cls has a
__subclasscheck__()
method, it will be called to determine the subclass status as described in PEP 3119. Otherwise, derived is a subclass of cls if it is a direct or indirect subclass, i.e. contained incls.__mro__
.Normally only class objects, i.e. instances of
type
or a derived class, are considered classes. However, objects can override this by having a__bases__
attribute (which must be a tuple of base classes).
-
int PyObject_IsInstance(PyObject *inst, PyObject *cls)¶
- 次に属します: Stable ABI.
inst がクラス cls もしくは cls の子クラスのインスタンスである場合に
1
を返し、そうでない場合に0
を返します。 エラーが起きると-1
を返し例外を設定します。cls がタプルの場合、 cls の全ての要素に対してチェックします。 少なくとも1つのチェックで
1
が返ったとき、結果は1
となり、それ以外のとき0
になります。If cls has a
__instancecheck__()
method, it will be called to determine the subclass status as described in PEP 3119. Otherwise, inst is an instance of cls if its class is a subclass of cls.An instance inst can override what is considered its class by having a
__class__
attribute.An object cls can override if it is considered a class, and what its base classes are, by having a
__bases__
attribute (which must be a tuple of base classes).
-
Py_hash_t PyObject_Hash(PyObject *o)¶
- 次に属します: Stable ABI.
オブジェクト o のハッシュ値を計算して返します。失敗すると
-1
を返します。 Python の式hash(o)
と同じです。バージョン 3.2 で変更: 返り値の型が Py_hash_t になりました。この型は、
Py_ssize_t
と同じサイズをもつ符号付き整数です。
-
Py_hash_t PyObject_HashNotImplemented(PyObject *o)¶
- 次に属します: Stable ABI.
Set a
TypeError
indicating thattype(o)
is not hashable and return-1
. This function receives special treatment when stored in atp_hash
slot, allowing a type to explicitly indicate to the interpreter that it is not hashable.
-
int PyObject_IsTrue(PyObject *o)¶
- 次に属します: Stable ABI.
o が真を表すとみなせる場合には
1
を、そうでないときには0
を返します。 Python の式not not o
と同じです。失敗すると-1
を返します。
-
int PyObject_Not(PyObject *o)¶
- 次に属します: Stable ABI.
o が真を表すとみなせる場合には
0
を、そうでないときには1
を返します。 Python の式not o
と同じです。失敗すると-1
を返します。
-
PyObject *PyObject_Type(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
When o is non-
NULL
, returns a type object corresponding to the object type of object o. On failure, raisesSystemError
and returnsNULL
. This is equivalent to the Python expressiontype(o)
. This function creates a new strong reference to the return value. There's really no reason to use this function instead of thePy_TYPE()
function, which returns a pointer of type PyTypeObject*, except when a new strong reference is needed.
-
int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)¶
Return non-zero if the object o is of type type or a subtype of type, and
0
otherwise. Both parameters must be non-NULL
.
-
Py_ssize_t PyObject_Size(PyObject *o)¶
-
Py_ssize_t PyObject_Length(PyObject *o)¶
- 次に属します: Stable ABI.
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)
と同じです。Added in version 3.4.
-
PyObject *PyObject_GetItem(PyObject *o, PyObject *key)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
オブジェクト key に対応する o の要素を返します。失敗すると
NULL
を返します。Python の式o[key]
と同じです。
-
int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)¶
- 次に属します: Stable ABI.
オブジェクト key を値 v に対応付けます。 失敗すると、例外を送出し
-1
を返します。成功すると0
を返します。 これは Python の文o[key] = v
と同等です。 この関数は v への参照を 盗み取りません 。
-
int PyObject_DelItem(PyObject *o, PyObject *key)¶
- 次に属します: Stable ABI.
オブジェクト o から key に関する対応付けを削除します。失敗すると
-1
を返します。Python の文del o[key]
と同じです。
-
PyObject *PyObject_Dir(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
この関数は Python の式
dir(o)
と同じで、オブジェクトの変数名に割り当てている文字列からなるリスト (空の場合もあります) を返します。エラーの場合にはNULL
を返します。引数をNULL
にすると、Python におけるdir()
と同様に、現在のローカルな名前を返します; この場合、アクティブな実行フレームがなければNULL
を返しますが、PyErr_Occurred()
は偽を返します。
-
PyObject *PyObject_GetIter(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
Python の式
iter(o)
と同じです。引数にとったオブジェクトに対する新たなイテレータか、オブジェクトがすでにイテレータの場合にはオブジェクト自身を返します。オブジェクトが反復処理不可能であった場合にはTypeError
を送出してNULL
を返します。
-
PyObject *PyObject_GetAIter(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.10 より).
This is the equivalent to the Python expression
aiter(o)
. Takes anAsyncIterable
object and returns anAsyncIterator
for it. This is typically a new iterator but if the argument is anAsyncIterator
, this returns itself. RaisesTypeError
and returnsNULL
if the object cannot be iterated.Added in version 3.10.
-
void *PyObject_GetTypeData(PyObject *o, PyTypeObject *cls)¶
- 次に属します: Stable ABI (バージョン 3.12 より).
Get a pointer to subclass-specific data reserved for cls.
The object o must be an instance of cls, and cls must have been created using negative
PyType_Spec.basicsize
. Python does not check this.On error, set an exception and return
NULL
.Added in version 3.12.
-
Py_ssize_t PyType_GetTypeDataSize(PyTypeObject *cls)¶
- 次に属します: Stable ABI (バージョン 3.12 より).
Return the size of the instance memory space reserved for cls, i.e. the size of the memory
PyObject_GetTypeData()
returns.This may be larger than requested using
-PyType_Spec.basicsize
; it is safe to use this larger size (e.g. withmemset()
).The type cls must have been created using negative
PyType_Spec.basicsize
. Python does not check this.On error, set an exception and return a negative value.
Added in version 3.12.
-
void *PyObject_GetItemData(PyObject *o)¶
Get a pointer to per-item data for a class with
Py_TPFLAGS_ITEMS_AT_END
.On error, set an exception and return
NULL
.TypeError
is raised if o does not havePy_TPFLAGS_ITEMS_AT_END
set.Added in version 3.12.