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

Python类构造函数传参报错:TypeError提示无需参数求助

问题排查与解决

核心错误原因

你把类的构造函数__init__误写成了__int__。__int__是Python中用于将对象转换为整数的魔法方法,并非初始化类实例的构造函数。当你调用ddpgAgent(参数)时,Python会寻找类的__init__方法,但你未正确定义该方法,因此会使用默认的无参构造函数,最终触发"takes no arguments"的错误。

修复步骤

  • 将ReplayMemory类中的__int__(self, mem_size, state_dim, action_dim)修改为__init__(self, mem_size, state_dim, action_dim)
  • 将ddpgAgent类中的__int__方法同样修改为__init__

代码对比示例

错误代码

class ReplayMemory:
    # 错误:构造函数名写错
    def __int__(self, mem_size, state_dim, action_dim):
        self.mem_size = mem_size
        self.state_dim = state_dim
        self.action_dim = action_dim
        # 其他初始化逻辑

class ddpgAgent:
    # 错误:构造函数名写错
    def __int__(self, agent_params):
        self.memory = ReplayMemory(agent_params['mem_size'], agent_params['state_dim'], agent_params['action_dim'])
        # 其他初始化逻辑

# 调用时报错
agent = ddpgAgent({'mem_size': 1000, 'state_dim': 4, 'action_dim': 2})

正确代码

class ReplayMemory:
    # 正确:使用__init__作为构造函数
    def __init__(self, mem_size, state_dim, action_dim):
        self.mem_size = mem_size
        self.state_dim = state_dim
        self.action_dim = action_dim
        # 其他初始化逻辑

class ddpgAgent:
    # 正确:使用__init__作为构造函数
    def __init__(self, agent_params):
        self.memory = ReplayMemory(agent_params['mem_size'], agent_params['state_dim'], agent_params['action_dim'])
        # 其他初始化逻辑

# 正常调用
agent = ddpgAgent({'mem_size': 1000, 'state_dim': 4, 'action_dim': 2})

验证结果

修改完成后,PyCharm的"意外参数"提示会自动消失,终端运行时不会再触发TypeError,类实例可正常完成初始化并使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:12:48