2011-05-10 64 views
2

如何获取boost python中的python对象的id。我希望这样的事情对象的Boost.Python ID

boost::python::obj = ...; 
int id = boost::python::id(obj); 

回答

2

从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); 
} 
+0

谢谢,这对我来说已经够用了。我只需要一些我可以快速加密的东西,并且可以散列'ptr()'。 – 2011-05-10 02:02:59