0

可能重复:
Python:按 id 获取对象

我有一个查询,也就是说,如果我们尝试这个,在 python 中

>>>a=5

>>>id(a)
>>>746363

那就是我们正在获取id,它相当于地址,我的查询是,有什么方法可以从id中获取值或对象,就像我们从对象中获取id一样

就像下面这样,

 >>>object(746363)

 >>>5

我写了上面的一个来清楚地传递我的查询

4

1 回答 1

1

首先,返回内存地址的 id() 是 CPython 的实现细节,Python 不保证它会继续以这种方式工作。所以你应该重新考虑它并寻求更多的pythonic方法。

Python 没有公开任何“好的”API 来执行此操作,但您可以使用 ctypes 模块访问任何内存点。此页面的示例:

import ctypes

class PyTypeObject(ctypes.Structure):
    _fields_ = ("ob_refcnt", ctypes.c_int), ("ob_type", ctypes.c_void_p), \
               ("ob_size", ctypes.c_int), ("tp_name", ctypes.c_char_p)

class PyObject(ctypes.Structure):
    _fields_ = ("ob_refcnt", ctypes.c_int), ("ob_type", ctypes.POINTER(PyTypeObject))

PyObjectPtr = ctypes.POINTER(PyObject)

print ctypes.cast(id("test"), PyObjectPtr).contents.ob_type.contents.tp_name
于 2012-12-08T10:15:35.140 回答