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

调用Python类方法报错:缺少必需位置参数'd'的问题求助

问题分析

你遇到的错误是因为直接用类名调用了实例方法。fx是sum类的实例方法,第一个参数self必须接收类的实例对象,但你直接用sum.fx(...)调用时,传入的第一个参数1被当成了self,后续参数依次错位,导致最后缺少了d参数。

解决方案

有两种可行的修正方式:

方式一:先创建类实例再调用方法

实例方法需要通过类的实例来调用,Python会自动把实例传入self参数:

class sum:
    def fx(self, op, a, b, c, d):
        if(op == 1):
            self.output = self.addition(a, b, c, d)
        else:
            self.output = self.subtraction(a, b, c, d)

    def addition(self, a, b, c, d):
        return a+b+c+d

    def subtraction(self, a, b, c, d):
        return a-b-c-d

# 先创建类的实例
calc = sum()
# 通过实例调用方法,self会自动传入
calc.fx(1, 1, 2, 3, 4)
# 获取输出结果
print(calc.output)  # 输出:10

方式二:将方法改为静态方法(无需实例)

如果你的类不需要维护实例属性(比如这里的self.output如果只是临时返回值,可以去掉),可以用@staticmethod装饰器把方法改成静态方法,这样就不需要self参数,直接用类名调用:

class sum:
    @staticmethod
    def fx(op, a, b, c, d):
        if(op == 1):
            return sum.addition(a, b, c, d)
        else:
            return sum.subtraction(a, b, c, d)

    @staticmethod
    def addition(a, b, c, d):
        return a+b+c+d

    @staticmethod
    def subtraction(a, b, c, d):
        return a-b-c-d

# 直接用类名调用静态方法
x = sum.fx(1, 1, 2, 3, 4)
print(x)  # 输出:10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:18