python - 如何在 python 交互模式下查看类内变量的值?
问题描述
当我使用 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>}
推荐阅读
- dictionary - 使用具有不可比较对象的 Map
- ios - 如何根据 iPhone 8、X 或 iPad 的屏幕尺寸更改代码
- android - 接受来电的有序广播不起作用
- sapui5 - SAP UI5 渲染内置按钮
- php - Wordpress 数据库连接错误 & 数据库未正常关闭
- c# - 使用键盘上的 Delete 按钮调用 DeleteButtonClick
- sorting - 如何根据关键字数据类型的嵌套字段对 Elasticsearch 结果进行排序?
- composer-php - 无法使用 localhost 访问超薄主页
- c# - 动态信号量请求计数
- javascript - 折叠/展开插入符号图标更改所有项目,而不仅仅是一个