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

开发VM翻译器时Python提示函数参数不足但已传参如何解决

问题根因
  • 你定义在VmWriter类中的generate_assembly_command_list是默认的实例方法,必须接收第一个参数self(实例对象),但你调用时直接使用类名VmWriter.generate_assembly_command_list(command_object)调用,没有传入对应的self参数,因此触发参数不足报错。
  • 额外注意你报错堆栈里的调用行用了file_name作为第二个参数,但你循环遍历字典键的变量是x,如果没有提前给file_name赋值,后续也会触发变量未定义报错。
解决方案

方案1:将方法改为静态方法

由于这个方法不需要访问类属性、实例属性,直接添加@staticmethod装饰器即可,不需要修改现有参数定义和调用逻辑:

class VmWriter:
    # 新增装饰器
    @staticmethod
    def generate_assembly_command_list(command_object):
        intermediate_list = []
        for x in command_object:
            for j in range(len(command_object[x])):
                # 这里如果之前写的是file_name,要改成x
                intermediate_list.append(VmWriter.generate_assembly_command(command_object[x][j], x))
        return intermediate_list

同时检查generate_assembly_command方法是否也属于不需要访问实例/类属性的工具方法,如果是的话也给它加上@staticmethod装饰器,避免同类报错。

方案2:改用实例调用方法

在__init__方法中通过当前实例self调用该方法,self会自动作为第一个参数传入,不需要修改方法定义:

def __init__(self, command_object):
    # 把VmWriter.前缀替换为self.
    self.assembly_command_list = self.generate_assembly_command_list(command_object)

内容的提问来源于stack exchange,提问作者sabertenn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:05