函数缺少 1 个必需的位置参数

新手上路,请多包涵

我收到此错误:

 Traceback (most recent call last):
  File "C:/Users/mali03/Desktop/Python/Practice/p2.py", line 18, in <module>
    first.subtraction(1, 2)
TypeError: subtraction() missing 1 required positional argument: 'y'

这是我的计算器类

class calculator:

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def addition(self, x, y):
        return self.x + self.y

    def subtraction(self, x, y):
        if self.x > self.y:
            return self.y - self.x
        else:
            return self.x - self.y

然后我用以下代码调用减法:

 first = calculator
first.subtraction(1, 2)

原文由 mali30 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 502
2 个回答

如前所述,如果您已经在 init 函数中收集了该信息,则不必在 加法减法 函数中包含参数。

像这样:

 class calculator:

def __init__(self, x, y):
    self.x = x
    self.y = y

def addition(self):
    return self.x + self.y

def subtraction(self):
    if self.x > self.y:
        return self.y - self.x
    else:
        return self.x - self.y

first = calculator
print(first(5,10).addition())

或者,如果您 确实 希望在 加法减法 函数中有 xy 参数,您可以像这样调整代码:

 class calculator:

def addition(self, x, y):
    return x + y

def subtraction(self, x, y):
    if x > y:
        return y - x
    else:
        return x - y

first = calculator
print(first().addition(5, 10))

其中使用各个函数的参数来代替提供给类对象的参数。

无论哪种方式,都取决于您想如何使用该课程。

原文由 Austin B 发布,翻译遵循 CC BY-SA 4.0 许可协议

或者你可以这样做:

 class calculator():

    def addition(self, x, y):
        return x + y

    def subtraction(self, x, y):
        if x > y:
            return y - x
        else:
            return x - y

first = calculator()
print(first.subtraction(1, 2))

也不完全确定 x > y: 是否是你的意图,或者如果 x < y: 你真的想要

原文由 tgikal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题