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

Python调用类方法报takes 2 positional arguments but 3 were given错误求解

TypeError报错原因分析

该报错由Python类方法的参数传递规则和实际方法签名不匹配导致,具体原因如下:

  • 首先明确Python实例方法的传参逻辑:调用实例对象的方法时,Python会自动将实例自身作为第一个参数传入方法的self位,你显式传入的参数会依次向后匹配。你调用new.network_combine1A_1((128, 130, 1), (55,))时,实际传入方法的参数总共有3个:new实例(对应self)、(128, 130, 1)、(55,)。
  • 报错提示方法仅接收2个位置参数,说明你network_final.py文件中实际定义的network_combine1A_1方法的签名和你预期的不一致,常见两种场景:
    • 场景1:你实际写的方法漏写了第二个入参,真实签名为def network_combine1A_1(self, input_shape1):,包含self一共只有2个参数,和传入的3个参数不匹配触发报错。
    • 场景2:你误给该方法加了@staticmethod装饰器,静态方法不会自动接收实例作为self参数,但你方法定义里仍然保留了self入参,此时你传入的2个显式参数加上需要匹配的self、input_shape1两个参数,就会出现多1个参数的报错。

修复方案

你可以通过打印方法签名快速定位问题:

from network_final import Network_1
import inspect

new = Network_1()
# 打印方法的实际参数列表
print(inspect.signature(new.network_combine1A_1))
  • 如果输出为(input_shape1),直接补全方法定义的第二个入参input_shape2即可。
  • 如果输出显示该方法为静态方法,删除@staticmethod装饰器,或者调整方法参数列表适配静态方法规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:36:03