Spyder中调试Python类__init__断点未触发问题求助(Matlab转Python新手)
解决Spyder中类
__init__断点未触发的问题 嘿,我当初从Matlab转Python用Spyder的时候也踩过一模一样的坑!别着急,核心原因其实特别直白:你只定义了类,但从来没有实例化它——Python里类的__init__方法只有在你创建类的对象(也就是实例化)的时候才会被调用,光写类的定义是不会执行__init__里的代码的。
给你一步步理清楚怎么解决:
- 先检查你的代码结构,你大概率现在只有类的定义:
但缺了最关键的实例化代码,也就是这一行:class MyPythonClass: def __init__(self): # 你在这里设置了断点 self.some_attr = 10 print("初始化方法执行了")# 只有执行这行,才会触发__init__方法,进而触发你的断点 my_instance = MyPythonClass() - 如果你是在单独的模块文件里定义的类,然后在主脚本里导入,一定要确保主脚本里有实例化类的操作,不然调试时程序只会加载类的定义,根本不会进入
__init__。 - 还有个小技巧:如果你的脚本已经进入调试状态但还没实例化,也可以直接在Spyder的调试控制台里手动输入实例化代码,这样也能立刻触发断点。
内容的提问来源于stack exchange,提问作者Mikhail Genkin
相关产品推荐
相关产品推荐

