2012-12-08 33 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 
相關問題