2011-05-10 53 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