调用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
相关产品推荐
相关产品推荐

