1

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

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

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

4

2 回答 2

2

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

于 2013-10-07T22:01:56.027 回答
0

如果你真的,真的想,这不是不可能的。只是很难,而且是一个非常糟糕的主意。

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

如果你真的很小心,你会得到一个快速的段错误,而不是把一切都破坏到地狱。如果你真的非常小心,你偶尔可以在没有段错误的情况下完成一些令人讨厌的黑客攻击。

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

于 2013-10-07T23:05:13.757 回答