gpt4 book ai didi

python - pybind11:如何使用上下文管理器实现

转载 作者:行者123 更新时间:2023-12-05 04:02:54 24 4
gpt4 key购买 nike

我正在尝试使用 pybind11 实现带有上下文管理器的 Python。

正在关注 Python's documentation ,我的第一个版本是:

    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_typeexc_valuetraceback是什么类型。我想它们可以很简单 pybind11::object

我可以使用它们更具体的绑定(bind)吗?

最佳答案

事实上,这些参数将作为 Python 对象出现,因此您应该为它们使用 pybind11::object 类型。使用 void* 不是解决方案。

Pybind11 可能是目前使用 C++ 作为其语言的 C++ 机制的最佳 Python 包装器。

关于python - pybind11:如何使用上下文管理器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54025245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com