描述器对象¶
“描述器”是描述对象的某些属性的对象。它们存在于类型对象的字典中。
-
PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)¶
- 返回值:新的引用。 属于 稳定 ABI.
Create a new get-set descriptor for extension type type from the
PyGetSetDefstructure getset.Get-set descriptors expose attributes implemented by C getter and setter functions rather than stored directly in the instance. This is the same kind of descriptor created for entries in
tp_getset, and it appears in Python as atypes.GetSetDescriptorTypeobject.On success, return a strong reference to the descriptor. Return
NULLwith an exception set on failure.
-
PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *member)¶
- 返回值:新的引用。 属于 稳定 ABI.
Create a new member descriptor for extension type type from the
PyMemberDefstructure member.Member descriptors expose fields in the type's C struct as Python attributes. This is the same kind of descriptor created for entries in
tp_members, and it appears in Python as atypes.MemberDescriptorTypeobject.On success, return a strong reference to the descriptor. Return
NULLwith an exception set on failure.
-
PyTypeObject PyMemberDescr_Type¶
- 属于 稳定 ABI.
基于
PyMemberDef结构体创建的成员描述器对象的类型对象。这种描述器将 C 结构的字段暴露为类型的属性,对应 Python 中的types.MemberDescriptorType对象。
-
PyTypeObject PyGetSetDescr_Type¶
- 属于 稳定 ABI.
The type object for get/set descriptor objects created from
PyGetSetDefstructures. These descriptors implement attributes whose value is computed by C getter and setter functions, and are used for many built-in type attributes. They correspond totypes.GetSetDescriptorTypeobjects in Python.
-
PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)¶
- 返回值:新的引用。 属于 稳定 ABI.
Create a new method descriptor for extension type type from the
PyMethodDefstructure meth.Method descriptors expose C functions as methods on a type. This is the same kind of descriptor created for entries in
tp_methods, and it appears in Python as atypes.MethodDescriptorTypeobject.On success, return a strong reference to the descriptor. Return
NULLwith an exception set on failure.
-
PyTypeObject PyMethodDescr_Type¶
- 属于 稳定 ABI.
The type object for method descriptor objects created from
PyMethodDefstructures. These descriptors expose C functions as methods on a type, and correspond totypes.MethodDescriptorTypeobjects in Python.
-
struct wrapperbase¶
Describes a slot wrapper used by
PyDescr_NewWrapper().Each
wrapperbaserecord stores the Python-visible name and metadata for a special method implemented by a type slot, together with the wrapper function used to adapt that slot to Python's calling convention.
-
PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)¶
- 返回值:新的引用。
Create a new wrapper descriptor for extension type type from the
wrapperbasestructure base and the wrapped slot function pointer wrapped.Wrapper descriptors expose special methods implemented by type slots. This is the same kind of descriptor that CPython creates for slot-based special methods such as
__repr__or__add__, and it appears in Python as atypes.WrapperDescriptorTypeobject.On success, return a strong reference to the descriptor. Return
NULLwith an exception set on failure.
-
PyTypeObject PyWrapperDescr_Type¶
- 属于 稳定 ABI.
由
PyDescr_NewWrapper()和PyWrapper_New()创建的包装器描述器对象的类型对象。 包装器描述器在内部被用于暴露通过包装器结构体实现的特殊方法,对应 Python 中的types.WrapperDescriptorType对象。
-
PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)¶
- 返回值:新的引用。 属于 稳定 ABI.
Create a new class method descriptor for extension type type from the
PyMethodDefstructure method.Class method descriptors expose C methods that receive the class rather than an instance when accessed. This is the same kind of descriptor created for
METH_CLASSentries intp_methods, and it appears in Python as atypes.ClassMethodDescriptorTypeobject.On success, return a strong reference to the descriptor. Return
NULLwith an exception set on failure.
-
int PyDescr_IsData(PyObject *descr)¶
如果描述器对象 descr 描述的是一个数据属性则返回非零值,或者如果它描述的是一个方法则返回
0。 descr 必须是一个描述器对象;不会进行错误检查。
-
PyObject *PyWrapper_New(PyObject *d, PyObject *self)¶
- 返回值:新的引用。 属于 稳定 ABI.
Create a new bound wrapper object from the wrapper descriptor d and the instance self.
This is the bound form of a wrapper descriptor created by
PyDescr_NewWrapper(). CPython creates these objects when a slot wrapper is accessed through an instance, and they appear in Python astypes.MethodWrapperTypeobjects.On success, return a strong reference to the wrapper object. Return
NULLwith an exception set on failure.
-
PyDescr_COMMON¶
This is a soft deprecated macro including the common fields for a descriptor object.
This was included in Python's C API by mistake; do not use it in extensions. For creating custom descriptor objects, create a class implementing the descriptor protocol (
tp_descr_getandtp_descr_set).
内置描述器¶
-
PyTypeObject PyProperty_Type¶
- 属于 稳定 ABI.
The type object for property objects. This is the same object as
propertyin the Python layer.
-
PyTypeObject PySuper_Type¶
- 属于 稳定 ABI.
super 对象的类型对象。它与 Python 层面的
super是相同的对象。
-
PyTypeObject PyClassMethod_Type¶
类方法对象的类型。它与 Python 层面的
classmethod是相同的对象。
-
PyTypeObject PyClassMethodDescr_Type¶
- 属于 稳定 ABI.
The type object for C-level class method descriptor objects. This is the type of the descriptors created for
classmethod()defined in C extension types, and corresponds totypes.ClassMethodDescriptorTypeobjects in Python.
-
PyObject *PyClassMethod_New(PyObject *callable)¶
新建一个包裹 callable 的
classmethod对象。callable 必须是一个可调用对象,并且不可为NULL值。成功时,此函数将返回一个指向新类方法描述器的 strong reference。失败时,此函数将返回
NULL并设置一个异常。
-
PyTypeObject PyStaticMethod_Type¶
静态方法对象的类型。它与 Python 层面的
staticmethod是相同的对象。
-
PyObject *PyStaticMethod_New(PyObject *callable)¶
新建一个包裹 callable 的
staticmethod对象。callable 必须是一个可调用对象,并且不可为NULL值。成功时,此函数将返回一个指向新静态方法描述器的 strong reference。失败时,此函数将返回
NULL并设置一个异常。