Boost.Python 对象的 id
Posted
技术标签:
【中文标题】Boost.Python 对象的 id【英文标题】:Boost.Python id of object 【发布时间】:2011-05-10 01:03:38 【问题描述】:如何在 boost python 中获取 python 对象的 id。我希望有类似的东西
boost::python::obj = ...;
int id = boost::python::id(obj);
【问题讨论】:
【参考方案1】:来自 Python documentation,在 CPython 中,返回的值是对象的地址。所以,如果你在 Boost Python 中寻找类似的东西:
boost::python::api::object obj = ...;
long id = static_cast<long>(obj.ptr());
粗略浏览一下源代码;内置 id
函数的实现(我正在查看 2.6.4)仅仅是:
static PyObject *
builtin_id(PyObject *self, PyObject *v)
return PyLong_FromVoidPtr(v);
【讨论】:
谢谢,这对我来说已经足够好了。我只需要可以快速散列的东西,我可以散列ptr()
。以上是关于Boost.Python 对象的 id的主要内容,如果未能解决你的问题,请参考以下文章
Boost.Python 从 C++ 创建对现有 Python 对象的新引用