Python面向对象编程:调用带参方法时出现NameError错误
解决方法:NameError: name 'time' is not defined
你遇到的NameError核心原因很明确:在transfer_task_passed_minimum_from_unassigned_production_tasks方法里调用completed_transfer_tasks(time)时,time变量完全没有定义——这个方法既没有将time作为参数接收,方法内部也没有对它赋值,Python自然找不到这个变量。
具体修复步骤
- 给
transfer_task_passed_minimum_from_unassigned_production_tasks方法添加time参数,让它能把时间值传递给completed_transfer_tasks - 在主程序调用这个方法时,传入对应的时间值(比如你之前使用的70)
修改后的代码片段
修正后的类方法
def transfer_task_passed_minimum_from_unassigned_production_tasks(self, time: int): production_task_ids = self.unassigned_production_tasks_in_stage2and3() transfer_task_ids = self.completed_transfer_tasks(time) # 现在time是合法的方法参数 for id in production_task_ids: if id in transfer_task_ids: return id return None
修正后的主程序调用
stage2 = Stage(2, [equipment1], [equipment2, equipment3]) if __name__ == '__main__': stage2.completed_transfer_tasks(70) x = stage2.transfer_task_passed_minimum_from_unassigned_production_tasks(70) # 传入time参数 print(x)
这样修改后,time变量通过方法参数合法传入,completed_transfer_tasks就能正确获取到需要的时间值,不会再抛出NameError。另外需要确保unassigned_production_tasks_in_stage2and3方法能正常返回预期的任务ID列表,否则可能会出现其他逻辑问题,但当前报错的根源已经解决。
内容的提问来源于stack exchange,提问作者Margi Shah
相关产品推荐
相关产品推荐

