在调试python期间,Spyder在变量资源管理器中不显示类实例变量

Posted

技术标签:

【中文标题】在调试python期间,Spyder在变量资源管理器中不显示类实例变量【英文标题】:Spyder does not show class instance variables in variable explorer during debugging python 【发布时间】:2014-09-03 06:56:16 【问题描述】:

我正在使用 Spyder v2.2.5 IDE 进行 python 编程。在 spyder 中使用 pdb 调试我的 python 代码时,IDE 不会在变量资源管理器中显示类实例变量。每次都使用 print 语句检查变量值变得越来越困难。 有没有办法在调试过程中检查类实例变量的值?

【问题讨论】:

有关信息,请在此处报告此问题:code.google.com/p/spyderlib/issues/detail?id=1887 【参考方案1】:

我知道这是一篇旧帖子,但我确实找到了一个临时解决方案。每个类对象都有一个与之关联的字典,其中包含分配的变量。这有点烦人,但您可以分配一个与该字典相同的全局变量,该字典可以在 Spyder 的变量资源管理器中查看。

import numpy as np 
class someClass:
    def __init__(self):
        self.var1=10     #integer type
        self.var2=np.ones((3,3,3))  #numpy array type
        self.var3=[np.ones((2,2,4))*i for i in range(5)]  #list type (of numpy arrays)

b=someClass()
tempdict=b.__dict__  #Then look at this variable under the Variable explorer

每次更改任何变量时都需要更新tempdict,但这会起作用。

【讨论】:

【参考方案2】:

作为解决此问题之前的临时解决方案,我在方法中使用局部变量,直到调试结束。使用相同的名称,但没有“自我”。在它面前。

就在 return 语句之前,我将局部变量分配给“self”。变量等效。

如果我需要先前存在的“自我”的值。变量在执行期间,然后我将它分配给方法开头的局部变量。

调试阶段完成后,您可以用适当的类属性替换本地。

【讨论】:

以上是关于在调试python期间,Spyder在变量资源管理器中不显示类实例变量的主要内容,如果未能解决你的问题,请参考以下文章

新分配的变量未显示在 Spyder 变量资源管理器中

在所有 Anaconda 环境中,Spyder 在加载期间不断崩溃

初学python,pycharm和Spyder哪个好

如何使用spyder调试python代码

如何在 Python 中使用 Spyder 进行高效调试?

使用spyder编译器单步调试python