Descriptor Objects
"Descriptors" are objects that describe some attribute of an object. They are found in the dictionary of type objects.
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
~PyTypeObject.tp_getset, and it appears in Python as atypes.GetSetDescriptorTypeobject.On success, return a
strong referenceto the descriptor. ReturnNULLwith an exception set on failure.
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
~PyTypeObject.tp_members, and it appears in Python as atypes.MemberDescriptorTypeobject.On success, return a
strong referenceto the descriptor. ReturnNULLwith an exception set on failure.
The type object for member descriptor objects created from
PyMemberDefstructures. These descriptors expose fields of a C struct as attributes on a type, and correspond totypes.MemberDescriptorTypeobjects in Python.
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.
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
~PyTypeObject.tp_methods, and it appears in Python as atypes.MethodDescriptorTypeobject.On success, return a
strong referenceto the descriptor. ReturnNULLwith an exception set on failure.
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.
The type object for wrapper descriptor objects created by
PyDescr_NewWrapperandPyWrapper_New.Wrapper descriptors are used internally to expose special methods such as
__repr__or__add__, which are implemented by type slots. The type is exposed in Python astypes.WrapperDescriptorType.
Create a new wrapper descriptor of type
PyWrapperDescr_Type.This function is meant for internal use only; it and related API (
struct wrapperbaseand thePyWrapperFlag_KEYWORDSflag) are exposed publicly for backwards compatibility reasons.See
PyCMethod_Newfor wrapping a C function.
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 in~PyTypeObject.tp_methods, and it appears in Python as atypes.ClassMethodDescriptorTypeobject.On success, return a
strong referenceto the descriptor. ReturnNULLwith an exception set on failure.
Return non-zero if the descriptor object descr describes a data attribute, or
0if it describes a method. descr must be a descriptor object; there is no error checking.
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 referenceto the wrapper object. ReturnNULLwith an exception set on failure.
Return a
borrowed referenceto the type that the descriptor descr belongs to. This is accessible as~object.__objclass__in Python.descr must be a descriptor object created by one of the
PyDescr_New*functions (an instance ofPyMethodDescr_Type,PyClassMethodDescr_Type,PyMemberDescr_Type,PyGetSetDescr_Type, orPyWrapperDescr_Type). If the passed descriptor is not an instance of one of these types, the behavior is undefined.
Return the name of the descriptor descr as a
borrowed referenceto astrobject. This is available as~definition.__name__in Python.descr must be a descriptor object created by one of the
PyDescr_New*functions. If not, the behavior is undefined.
This is a 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 (
~PyTypeObject.tp_descr_getand~PyTypeObject.tp_descr_set).3.15
Built-in descriptors
The type object for property objects. This is the same object as
propertyin the Python layer.
The type object for super objects. This is the same object as
superin the Python layer.
The type of class method objects. This is the same object as
classmethodin the Python layer.
The type object for C-level class method descriptor objects. This is the type of the descriptors created for
classmethoddefined in C extension types, and corresponds totypes.ClassMethodDescriptorTypeobjects in Python.
Create a new
classmethodobject wrapping callable. callable must be a callable object and must not beNULL.On success, this function returns a
strong referenceto a new class method descriptor. On failure, this function returnsNULLwith an exception set.
The type of static method objects. This is the same object as
staticmethodin the Python layer.
Create a new
staticmethodobject wrapping callable. callable must be a callable object and must not beNULL.On success, this function returns a
strong referenceto a new static method descriptor. On failure, this function returnsNULLwith an exception set.
谢谢你的反馈!