在调试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在变量资源管理器中不显示类实例变量的主要内容,如果未能解决你的问题,请参考以下文章