python — pybind11: как реализовать контекстный менеджер

Я пытаюсь реализовать Python с помощью диспетчера контекста с pybind11.

Следующий Документация Python, моя первая версия:

    py::class_<MyResource> (module, "CustomResource", "A custom ressource")
.def("__enter__", [&] (MyResource& r) { r.lock(); }
, "Enter the runtime context related to this object")
.def("__exit__", [&] (MyResource& r, void* exc_type, void* exc_value, void* traceback) { r.unlock(); }
, "Exit the runtime context related to this object")
;

Я не знаю, какие типы exc_type, exc_value а также traceback, Я думаю, они могут быть простыми pybind11::object?

Могу ли я использовать более конкретные привязки?

0

Решение

На самом деле эти аргументы будут приходить как объекты Python, поэтому вы должны использовать pybind11::object типа для них. С помощью void* это не решение

Pybind11, вероятно, лучшая оболочка Python для механизма C ++, которая на данный момент использует C ++ в качестве языка.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]