Содержание страницы
Объекты модулей¶Module Objects
Есть лишь несколько функций, специфичных для объектов модуля.
- PyTypeObject PyModule_Type¶
Этот экземпляр PyTypeObject представляет тип модуля Python. Он доступен программам на Python как types.ModuleType.
- int PyModule_Check(PyObject *p)¶
- Возвращает истину, если p является объектом модуля или подтипом объекта модуля.
- int PyModule_CheckExact(PyObject *p)¶
- Возвращает true, если p является объектом модуля, но не подтипом PyModule_Type.
- PyObject* PyModule_New(const char *name)¶
- Возвращаемое значение: новая ссылка.
Возвращает новый объект модуля с атрибутом __name__, установленным в name. Заполнены только атрибуты модуля __doc__ и __name__; вызывающий отвечает за предоставление атрибута __file__.
- PyObject* PyModule_GetDict(PyObject *module)¶
- Возвращаемое значение: заимствованная ссылка.
Возвращает объект словаря, который реализует пространство имён module; этот объект совпадает с атрибутом __dict__ объекта модуля. Эта функция никогда не завершается ошибкой. Расширениям рекомендуется использовать другие PyModule_*() и PyObject_*() функции, а не напрямую манипулировать __dict__ модуля.
- char* PyModule_GetName(PyObject *module)¶
Возвращает значение __name__ для объекта module. Если модуль не предоставляет его или если это не строка, возбуждается SystemError и возвращается NULL.
- char* PyModule_GetFilename(PyObject *module)¶
Возвращает имя файла, из которого был загружен модуль, используя модуль‘s __file__ атрибут. Если этот атрибут не определён или не является строкой, возбуждает SystemError и возвращает NULL.
- void* PyModule_GetState(PyObject *module)¶
- Возвращает «состояние» модуля, то есть указатель на блок памяти, выделенный при создании модуля, или NULL. См. PyModuleDef.m_size.
- PyModuleDef* PyModule_GetDef(PyObject *module)¶
- Возвращает указатель на структуру PyModuleDef, из которой был создан модуль, или NULL, если модуль не был создан с помощью PyModule_Create().
Инициализация C-модулей¶Initializing C modules
Эти функции обычно используются в функции инициализации модуля.
- PyObject* PyModule_Create(PyModuleDef *module)¶
- Создаёт новый объект модуля по определению в module. Работает как PyModule_Create2(), где module_api_version установлено в PYTHON_API_VERSION.
- PyObject* PyModule_Create2(PyModuleDef *module, int module_api_version)¶
Создаёт новый объект модуля по определению в module, принимая версию API module_api_version. Если эта версия не совпадает с версией работающего интерпретатора, выдаётся RuntimeWarning.
Примечание
В большинстве случаев следует использовать PyModule_Create(); используйте эту функцию, только если уверены, что она нужна.
- PyModuleDef¶
Эта структура содержит всю информацию, необходимую для создания объекта модуля. Обычно для каждого модуля существует только одна статическая переменная этого типа, которая статически инициализируется и затем передаётся в PyModule_Create() в функции инициализации модуля.
- PyModuleDef_Base m_base¶
- Этот член следует всегда инициализировать значением PyModuleDef_HEAD_INIT.
- char* m_name¶
- Имя нового модуля.
- char* m_doc¶
- Докстринг модуля; обычно используется переменная докстринга, созданная с помощью PyDoc_STRVAR().
- Py_ssize_t m_size¶
Если объекту модуля требуется дополнительная память, это значение должно быть установлено равным количеству байтов для выделения; указатель на блок памяти можно получить с помощью PyModule_GetState(). Если память не нужна, установите это значение равным -1.
Эту память следует использовать для хранения состояния каждого модуля вместо статических глобальных переменных, поскольку тогда она будет безопасна для использования в нескольких под-интерпретаторах. Она освобождается при деаллокации объекта модуля после вызова функции m_free, если она присутствует.
- PyMethodDef* m_methods¶
- Указатель на таблицу функций уровня модуля, описываемую значениями PyMethodDef. Может быть NULL, если функции отсутствуют.
- traverseproc m_traverse¶
- Функция обхода, вызываемая во время GC-обхода объекта модуля, или NULL, если не требуется.
- inquiry m_clear¶
- Функция очистки, вызываемая во время GC-очистки объекта модуля, или NULL, если не требуется.
- freefunc m_free¶
- Функция, вызываемая при освобождении объекта модуля, или NULL, если не требуется.
- int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)¶
- Добавляет объект в module под именем name. Это удобная функция, которую можно использовать в функции инициализации модуля. Она похищает ссылку на value. Возвращает -1 при ошибке, 0 при успехе.
- int PyModule_AddIntConstant(PyObject *module, const char *name, long value)¶
- Добавляет целочисленную константу в модуль module под именем name. Эту удобную функцию можно использовать из функции инициализации модуля. Возвращает -1 в случае ошибки, 0 при успешном выполнении.
- int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)¶
- Добавляет строковую константу в module под именем name. Эту вспомогательную функцию можно использовать в функции инициализации модуля. Строка value должна завершаться нулевым символом. Возвращает -1 при ошибке, 0 при успехе.