我有一个 C++ 中的单例类(没有公共构造函数,C++ 程序员调用 class.instance() 来创建单例或返回现有的单例)。
我更愿意在 Python 级别隐藏它。如果我正在编写一个 Python 单例,我会在__new__. 如果一个类没有公共构造函数,我认为我无法创建__init__包装器(我的尝试失败了)。我在 pybind11 文档中没有看到提及__new__(尽管可能错过了它,并且 Google 似乎很乐意省略下划线包含“new”的返回页面,但没有提及__new__)。
pybind11(甚至Boost.Python)有单例配方吗?
我不确定 pybind11,但我相信应该可以使用 Boost.Python 包装您的类。(你的问题是“或者甚至Boost.Python”......)
使用noncopyable和/或no_init:
class_<Klass, boost::noncopyable>("Klass", no_init)
.staticmethod("instance")
;
Run Code Online (Sandbox Code Playgroud)
https://mail.python.org/pipermail/cplusplus-sig/2004-March/006647.html
| 归档时间: |
|
| 查看次数: |
3064 次 |
| 最近记录: |