gpt4 book ai didi

python - 如何检测 Python 在幕后进行的方法调用?

转载 作者:太空狗 更新时间:2023-10-29 21:35:57 26 4
gpt4 key购买 nike

特别是,我想查看特定代码行调用了哪个魔法方法。

例如,我知道 1 + 2 实际上调用了 (1).__add__(2)[1,2,3][0] 调用 [1,2,3].__getitem__(0)

我想知道其他操作调用了哪些魔术方法,而无需在线查找。

最佳答案

没有一个好的方法来检查它。您可能应该查一下。

在实现中(特别针对 CPython),1 + 2[1, 2, 3][0] 实际上不会经过 __add____getitem__ 方法;他们将通过 C 级 Hook 并完全跳过这些方法。即使他们通过了这些方法,它也会发生在 C 级代码中,您无法使用 PDB 进行调试或做很多检查。

我所拥有的与您所寻找的精神相匹配的最接近的东西是

>>> import unittest.mock
>>> unittest.mock.MagicMock() + 3
<MagicMock name='mock.__add__()' id='140290799397408'>

所以嘿,看! + 使用 __add__。你可以运行它来查看为 + 调用了什么魔法方法。不过,它并不涉及实际检查 + 中涉及的魔术方法。 MagicMock 已经编写了大多数标准魔术方法的实现。

关于python - 如何检测 Python 在幕后进行的方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com