> **Источник:** https://python-all.ru/3.15/c-api/sentinel.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты Sentinel

#### `PyTypeObject PySentinel_Type`

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.15/c-api/type.html#c.PyTypeObject) представляет тип Python [`sentinel`](https://python-all.ru/3.15/library/functions.html#sentinel). Он является тем же объектом, что и `sentinel`.

Добавлено в версии 3.15.

#### `int PySentinel_Check(PyObject *o)`

Возвращает true, если *o* является объектом [`sentinel`](https://python-all.ru/3.15/library/functions.html#sentinel) или подтипом. Тип `sentinel` в настоящее время не допускает подклассов, поэтому эта проверка точна. Будущие версии Python могут разрешить создание подтипов. Эта функция всегда завершается успешно.

Добавлено в версии 3.15.

#### `int PySentinel_CheckExact(PyObject *o)`

Возвращает true, если *o* является объектом [`sentinel`](https://python-all.ru/3.15/library/functions.html#sentinel), но не подтипом. Тип `sentinel` в настоящее время не допускает подклассов. Будущие версии Python могут разрешить создание подтипов. Эта функция всегда завершается успешно.

Добавлено в версии 3.15.

#### `PyObject *PySentinel_New(const char *name, const char *module_name, const char *repr)`

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`sentinel`](https://python-all.ru/3.15/library/functions.html#sentinel), в котором [`__name__`](https://python-all.ru/3.15/library/functions.html#sentinel.__name__) установлено в *name*, а [`__module__`](https://python-all.ru/3.15/library/functions.html#sentinel.__module__) установлено в *module\_name*. *name* не должно быть `NULL`. Если *module\_name* равно `NULL`, `__module__` устанавливается в `None`. Если *repr* равно `NULL`, `repr()` возвращает `__name__`. При неудаче возвращает `NULL` с установленным исключением.

Для работы сериализации (pickling) *module\_name* должно быть именем импортируемого модуля, а sentinel должен быть доступен из этого модуля по пути, соответствующему *name*. Pickle рассматривает *name* как имя глобальной переменной в *module\_name* (см. [`object.__reduce__()`](https://python-all.ru/3.15/library/pickle.html#object.__reduce__)).

Добавлено в версии 3.15.
