__init __()缺少1个必需的位置参数,它会将self读取为参数

时间:2019-11-28 16:45:38

标签: python oop

我是编程新手,正在学习Python。代码应该非常简单。目标应该是实现一个在数字之间进行加法运算的计算器。 它返回此错误:

init ()缺少1个必需的位置参数:“ number_2”

所以这就像将self读取为参数,但我不知道为什么。 我正在使用Linux Ubuntu 19作为操作系统。 这是我的代码:

class Calculator:
    def __init__(self, number_1, number_2):
        self.number_1=number_1
        self.number_2=number_2

    def add(self):
        print(f"{number_1}+{number_2}={number_1+number_2}")

if __name__=="__main__":
    c=Calculator('Casio')
    c.add(2,3)

3 个答案:

答案 0 :(得分:1)

这里不是将self读取为参数,而是将'Casio'存储为number_1。读取错误消息时,它缺少number 2。如果您希望add()能够接受任意值,则需要将它们作为参数添加到该方法中,而不是添加到__init__()函数中。

答案 1 :(得分:1)

您必须将参数传递给add函数,而不是传递给实例化该类的__init__

class Calculator:
    def __init__(self, name):
        self.name=name

    def add(self, number_1, number_2):
        print(f"{number_1}+{number_2}={number_1+number_2}")

if __name__=="__main__":
    c=Calculator('Casio')
    c.add(2,3)

答案 2 :(得分:0)

初始化对象'c'时,正在运行init方法,因此需要将两个参数都传递给init方法。因此,创建对象时,必须同时提供'number_1''number_2'。您仅传递了'Casio',而python解释为'number_1'。 Python还解释说没有'number_2'。以下是一些解决方案: 1:您可以使add()函数具有init具有的两个参数('number_1''number_2'),并且init的唯一参数是{{1} }和self。然后,您可以让'name'方法仅执行init而什么也不能做。 2:如果不输入参数self.name = name'number_1',则可以通过为它们设置默认变量来使其为可选:

'number_2'
相关问题