检查给定内存地址处的对象

时间:2013-10-07 21:55:57

标签: python python-2.7 sqlalchemy

给出python解释器抛出的典型错误消息:

TypeError: <sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x3506490> is not JSON serializable

我可以使用该内存地址使用python shell查找有问题的对象吗?

2 个答案:

答案 0 :(得分:2)

不,你不能。该地址的唯一目的是识别对象以进行调试。

答案 1 :(得分:0)

如果你真的,真的想,那并非不可能。很难,也是一个非常糟糕的主意。

在CPython中,您可以使用ctypes将数字转换为指向您想要的任何类型的指针。并且从sys.executable(和/或实际代码所在的so / dll /框架)加载和调用函数就像任何其他库一样。并定义与C API结构匹配的结构。

如果你真的很小心,你会得到一个快速的段错误而不是腐败一切都是地狱。如果你真的非常非常小心,你偶尔会发现一些令人讨厌的黑客攻击而不会发生分裂。

然而,在这种情况下,你不太可能对你有任何好处。当然,在某些时候有一个sqlalchemy.orm.dynamic.AppenderBaseQuery对象在0x3506490 ......但是一旦该对象超出范围,它可能会被释放,所以在那个位置可能有任何东西......