You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python面向对象编程:调用带参方法时出现NameError错误

解决方法:NameError: name 'time' is not defined

你遇到的NameError核心原因很明确:在transfer_task_passed_minimum_from_unassigned_production_tasks方法里调用completed_transfer_tasks(time)时,time变量完全没有定义——这个方法既没有将time作为参数接收,方法内部也没有对它赋值,Python自然找不到这个变量。

具体修复步骤

  1. 给transfer_task_passed_minimum_from_unassigned_production_tasks方法添加time参数,让它能把时间值传递给completed_transfer_tasks
  2. 在主程序调用这个方法时,传入对应的时间值(比如你之前使用的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:02:42