Об’єкти типу¶
-
PyTypeObject¶ Структура C об’єктів, що використовуються для опису вбудованих типів.
-
PyObject*
PyType_Type¶ Це об’єкт типу для об’єктів типу; це той самий об’єкт, що й
typeна рівні Python.
-
int
PyType_Check(PyObject *o)¶ Return true if the object o is a type object, including instances of types derived from the standard type object. Return false in all other cases.
-
int
PyType_CheckExact(PyObject *o)¶ Return true if the object o is a type object, but not a subtype of the standard type object. Return false in all other cases.
-
unsigned int
PyType_ClearCache()¶ Очистіть внутрішній кеш пошуку. Повернути тег поточної версії.
-
unsigned long
PyType_GetFlags(PyTypeObject* type)¶ Return the
tp_flagsmember of type. This function is primarily meant for use with Py_LIMITED_API; the individual flag bits are guaranteed to be stable across Python releases, but access totp_flagsitself is not part of the limited API.Нове в версії 3.2.
Змінено в версії 3.4: Тип повернення тепер
unsigned long, а неlong.
-
void
PyType_Modified(PyTypeObject *type)¶ Визнати недійсним внутрішній кеш пошуку для типу та всіх його підтипів. Цю функцію необхідно викликати після будь-якої ручної зміни атрибутів або базових класів типу.
-
int
PyType_HasFeature(PyTypeObject *o, int feature)¶ Return true if the type object o sets the feature feature. Type features are denoted by single bit flags.
-
int
PyType_IS_GC(PyTypeObject *o)¶ Return true if the type object includes support for the cycle detector; this tests the type flag
Py_TPFLAGS_HAVE_GC.
-
int
PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)¶ Повертає true, якщо a є підтипом b.
This function only checks for actual subtypes, which means that
__subclasscheck__()is not called on b. CallPyObject_IsSubclass()to do the same check thatissubclass()would do.
-
PyObject*
PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)¶ - Return value: New reference.
Загальний обробник для слота
tp_allocоб’єкта типу. Використовуйте стандартний механізм виділення пам’яті Python, щоб виділити новий екземпляр та ініціалізувати весь його вміст якNULL.
-
PyObject*
PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)¶ - Return value: New reference.
Загальний обробник для слота
tp_newоб’єкта типу. Створіть новий екземпляр, використовуючи слот типуtp_alloc.
-
int
PyType_Ready(PyTypeObject *type)¶ Завершення об’єкта типу. Це слід викликати для всіх об’єктів типу, щоб завершити їх ініціалізацію. Ця функція відповідає за додавання успадкованих слотів від базового класу типу. Повертає
0у разі успіху або-1і встановлює виняток у випадку помилки.
-
void*
PyType_GetSlot(PyTypeObject *type, int slot)¶ Повертає вказівник функції, що зберігається у вказаному слоті. Якщо результат
NULL, це означає, що або слот маєNULL, або що функцію було викликано з недійсними параметрами. Викликачі зазвичай перетворюють покажчик результату на відповідний тип функції.Перегляньте
PyType_Slot.slot, щоб дізнатися про можливі значення аргументу slot.An exception is raised if type is not a heap type.
Нове в версії 3.4.
Створення типів, виділених у купі¶
Наступні функції та структури використовуються для створення типів купи.
-
PyObject*
PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)¶ - Return value: New reference.
Creates and returns a heap type object from the spec (
Py_TPFLAGS_HEAPTYPE).If bases is a tuple, the created heap type contains all types contained in it as base types.
If bases is
NULL, the Py_tp_bases slot is used instead. If that also isNULL, the Py_tp_base slot is used instead. If that also isNULL, the new type derives fromobject.Ця функція викликає
PyType_Ready()для нового типу.Нове в версії 3.3.
-
PyObject*
PyType_FromSpec(PyType_Spec *spec)¶ - Return value: New reference.
Equivalent to
PyType_FromSpecWithBases(spec, NULL).
-
PyType_Spec¶ Структура, що визначає поведінку типу.
-
const char*
PyType_Spec.name¶ Назва типу, що використовується для встановлення
PyTypeObject.tp_name.
-
int
PyType_Spec.basicsize¶
-
int
PyType_Spec.itemsize¶ Size of the instance in bytes, used to set
PyTypeObject.tp_basicsizeandPyTypeObject.tp_itemsize.
-
int
PyType_Spec.flags¶ Прапорці типу, які використовуються для встановлення
PyTypeObject.tp_flags.Якщо прапор
Py_TPFLAGS_HEAPTYPEне встановлено,PyType_FromSpecWithBases()встановлює його автоматично.
-
PyType_Slot *
PyType_Spec.slots¶ Масив структур
PyType_Slot. Закінчується спеціальним значенням слота{0, NULL}.
-
const char*
-
PyType_Slot¶ Структура, що визначає необов’язкову функціональність типу, що містить ідентифікатор слота та покажчик значення.
-
int
PyType_Slot.slot¶ Ідентифікатор слота.
Ідентифікатори слотів називаються як імена полів структур
PyTypeObject,PyNumberMethods,PySequenceMethods,PyMappingMethodsіPyAsyncMethodsз доданим префіксомPy_. Наприклад, використовуйте:Py_tp_deallocдля встановленняPyTypeObject.tp_deallocPy_nb_addдля встановленняPyNumberMethods.nb_addPy_sq_lengthдля встановленняPySequenceMethods.sq_length
The following fields cannot be set using
PyType_SpecandPyType_Slot:tp_print
Setting
Py_tp_basesorPy_tp_basemay be problematic on some platforms. To avoid issues, use the bases argument ofPyType_FromSpecWithBases()instead.
-
void *
PyType_Slot.pfunc¶ Бажане значення слота. У більшості випадків це вказівник на функцію.
May not be
NULL.
-
int