测试Habit类方法遇NameError:initiate_habit未定义,求排查
问题原因及解决方法
错误根源
initiate_habit是Habit类的实例方法,必须通过Habit类的实例对象调用,你直接全局调用initiate_habit(),Python找不到这个全局函数,因此抛出NameError。
修正后的测试代码
通过已创建的habit实例调用该方法即可:
habit = Habit('Read', 'Read 15 pages daily') habit.initiate_habit() # 用实例对象调用类内的方法
额外优化建议
- 当前
initiate_habit方法中收集的habit_name、type等变量没有与实例属性绑定,方法执行后这些变量会被销毁,建议将其赋值给实例属性,比如self.habit_type = type、self.duration = duration,方便后续逻辑复用。 - 如果该方法的作用是创建新的Habit实例而非修改现有实例,可考虑将其设计为类方法或静态方法。
内容的提问来源于stack exchange,提问作者B.Copeland
相关产品推荐
相关产品推荐

