繁体   English   中英

在python交互模式下,如何查看类内部变量的值?

[英]How can I see the value of a variable that is inside a class during python interactive mode?

当我使用python -i file.py运行脚本并且收到错误消息时,我想找出该变量的值。 但是,它在类内部,而不是实例。

class Foo:
    def func(self):
        action_dict = self.socket_resp() # a function that recieves some response from a socket. 
        print(action_dict['bar'])

python -i foo.py

KeyError在action_dict中没有'bar'

action_dict

NameError:名称'action_dict'未定义'

如何在交互模式下获取action_dict变量的值

是的,你可以得到它。 -i的异常将在sys.last_value 首先 import sys并将sys.last_value保存到变量中! 如果您输入错误,则该异常将永远消失!

然后,您可以导入traceback模块并检查激活记录,其中包括所有调用帧中的局部变量!

这样我们得到:

% python3 -i file.py
Traceback (most recent call last):
  File "file.py", line 6, in <module>
    Foo().func()
  File "file.py", line 4, in func
    print(action_dict['bar'])
KeyError: 'bar'
>>> import sys
>>> exc = sys.last_value
>>> import traceback
>>> [*traceback.walk_tb(exc.__traceback__)][-1][0].f_locals
{'action_dict': {'foo': 'spam'}, 'self': <__main__.Foo object at 0x7f6aa2e6b978>}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM