2012-12-08 31 views
-2

可能重复:
Python: Get object by id如何使用它以检索对象的Python中的id

我有一个查询,即在蟒蛇 如果我们试试这个

>>>a=5 

>>>id(a) 
>>>746363 

即我们正在获取id,它相当于地址, 我的查询是th在,有什么办法 得到的ID值或对象,就像我们是从目标

就像如下,

>>>object(746363) 

>>>5 

获得ID上面我写的一个交付我的查询清楚

+0

您真的,真的确定您需要这个吗?你究竟想要做什么? – l4mpi

+0

是的,我需要在我的项目中。这出来时,我正在考虑共享内存 –

+1

你不需要这个,python已经有手段共享内存。再次阅读有关多处理的文档。 – Paladin

回答

1

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

Python不会公开任何“好”API来执行此操作,但可以使用ctypes模块访问任何内存点。 来自this page的示例:

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 
相关问题