从PyCObject获取地址?

时间:2015-05-30 13:23:09

标签: python ctypes python-2.6

我觉得奇怪的是,我无法通过搜索来回答这个问题,只是从如何从指针创建PyCObject的相反问题(在C中,而不是Python)。我可能只是使用了错误的搜索词。

我在Python中有一个PyCObject,我想得到包装的内存地址。好吧,实际上我想将它转换为ctypes指针,但我可以从内存地址执行此操作。我怎么才能得到它? help(some_pyc_object)信息量不大,dir(some_pyc_object)也不是。

我想做以下事情:

addr = some_pyc_object.get_memory_address()   # pseudo method
data = ctypes.c_long_p(addr)
# ...

1 个答案:

答案 0 :(得分:3)

致电PyCObject_AsVoidPtr

import ctypes

PyCObject_AsVoidPtr = ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.py_object)(
                          ('PyCObject_AsVoidPtr', ctypes.pythonapi))

addr = PyCObject_AsVoidPtr(some_pyc_object)