检查Python中是否存在对象ID

时间:2015-12-03 21:53:43

标签: python ctypes cpython

简单:我有一个Python对象id,我想检查是否有一个带有该id的对象。

this SO answer,您可以通过ID

获取现有对象
import ctypes
a = 10
object_id = id(a)
ctypes.cast(object_id, ctypes.py_object).value

但是在使用任意object_id调用时它会挂起,因此这是一个不切实际的解决方案。

1 个答案:

答案 0 :(得分:2)

要做到这一点,您需要详尽列举所有Python对象。否则,就不可能分辨出恰好看起来像对象的对象和内存区域之间的区别。

不幸的是,没有这么详尽的清单。最接近的可能是gc.get_objects(),它返回垃圾收集器跟踪的所有对象的列表(不包括列表本身)。您可以搜索与您的ID匹配的对象,但x = 1; print x in gc.get_objects()之类的内容无法找到该对象。