从 PyCObject 获取地址?

Get address from PyCObject?

我发现很奇怪我无法通过搜索来回答这个问题,只有相反的问题关于如何从指针创建 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)
# ...

呼叫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)