c++ - 如何确保始终为特定 C++ 实例返回相同的 Python 实例?

标签 c++ python boost boost-python

我正在使用 Boost.Python 来包装 C++ 库。

如何确保始终为特定的 C++ 实例(通过指针标识)返回相同的 Python 实例(通过对象标识)?我无法扩展 C++ 类,但如果有帮助,我可以添加一个成员变量(例如 PyObject * 或 boost::python::handle<>)。我在想我应该能够在 C++ 实例中缓存 Python 实例,并返回缓存的实例而不是创建一个新实例。但是,我不知道需要什么包装代码。

要包装的示例类:

class C {
public:
    boost::python::handle<> wrapper_;

private:
    C();
    C(const C &);
    ~C();
};

有人可以提供建议吗?

最佳答案

在对这个问题投入了一些时间之后,我得出的结论是它带来的麻烦多于它的值(value)。我已经放弃了 id() 将识别(可能是短暂的)包装器对象而不是实际的 C++ 对象。

相反,我以其他方式识别我的 C++ 对象,例如通过查看内容。

关于c++ - 如何确保始终为特定 C++ 实例返回相同的 Python 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182264/

相关文章:

c++ - LPTHREAD_START_ROUTINE/类数组

python - Psycopg2 使用 pip 安装有效但无法在 OS X 10.9 上导入模块

python - pyschool 主题 4 Q 1

c++ - 共享指针 (shared_ptr) 的 Boost Fusion 容器导致段错误 (sigsegv) 或垃圾结果

c++ - GTKMM 和 boost.asio

c++ - 关于 cvFloodFill() 函数的 OpenCV 未处理异常

c++ - C++中的模板继承错误

c++ - 组合框 - OnCtlColor : How to color the whole list rect

Python csv 阅读 - 如何仅向字符串添加引号

c++ - 我试图在 C++03 中嵌套 boost 的 "map_list_of",但显然构造不明确?