gpt4 book ai didi

pybind11 - 如何使用 pybind11 包装单例类?

转载 作者:行者123 更新时间:2023-12-03 23:19:15 49 4
gpt4 key购买 nike

我在 C++ 中有一个单例类(没有公共(public)构造函数,C++ 程序员调用 class.instance() 来创建单例或返回现有的)。

我更愿意在 Python 级别隐藏它。如果我正在编写 Python 单例,我会在 __new__ 中处理它.如果一个类没有公共(public)构造函数,我认为我不能创建 __init__包装器(我的尝试失败了)。我没有看到提到 __new__在 pybind11 文档中(尽管可能错过了它,而且 Google 似乎很乐意省略下划线包含"new"的返回页面,没有提及 __new__ )。

pybind11(甚至 Boost.Python)有单例配方吗?

最佳答案

你不需要暴露__init__如果你不从 Python 实例化你的类。至于你的问题,你可以尝试这样的事情:

py::class_<CppSingle>(mod, "Single")
.def_static("__new__", [](py:object) { return CppSingle::instance(); )},
py::return_value_policy::reference_internal);

关于pybind11 - 如何使用 pybind11 包装单例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41814652/

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