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

创建C语言解析器时遇TypeError:__init__仅接受1个参数却传入2个

解决TypeError: init() takes exactly 1 argument (2 given)的问题

这个错误的核心逻辑很清晰:你调用Language(lib_path, language_name)时传入了两个参数,但Language类的__init__方法只定义了self这一个必选参数(Python中类方法的第一个参数self是自动传入的,不算你手动传递的参数)。

你可以从以下两个方向解决问题:

1. 调整参数传递方式适配类的设计

先找到Language类的定义代码,查看它的初始化逻辑:

  • 如果这个类不需要把lib_path和language_name作为初始化参数,而是通过属性赋值、类工厂方法等其他方式配置,那你要修改调用逻辑。比如类提供了专门的创建方法:
    # 假设Language类有这类工厂方法
    @classmethod
    def setup(cls, lib_path, language_name):
        lang_instance = cls()
        lang_instance.lib_path = lib_path
        lang_instance.language_name = language_name
        return lang_instance
    
    那你应该改成:
    language = Language.setup(lib_path, language_name)
    
  • 如果类只需要其中一个参数完成初始化,比如只需要language_name,那直接传递单个参数即可:
    language = Language(language_name)
    

2. 修改Language类的__init__方法适配参数需求

如果你的业务逻辑确实需要在初始化时传入这两个参数,那修改Language类的__init__方法,添加对应的参数:

class Language:
    def __init__(self, lib_path, language_name):
        self.lib_path = lib_path
        self.language_name = language_name
        # 保留原来的初始化逻辑

修改完成后,你原来的调用代码language = Language(lib_path, language_name)就能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:15:10