Python __init_u3;()缺少1个必需的位置参数,它将self作为参数读取

Python __init_u3;()缺少1个必需的位置参数,它将self作为参数读取,python,oop,Python,Oop,我是编程新手,正在学习Python。代码应该非常简单。目标应该是实现一个在数字之间进行加法运算的计算器。 它返回以下错误: init()缺少1个必需的位置参数:“number_2” 这就像它把self作为一个参数,但我不明白为什么。 我使用LinuxUbuntu19作为操作系统。 这是我的密码: class Calculator: def __init__(self, number_1, number_2): self.number_1=number_1

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

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

这就像它把self作为一个参数,但我不明白为什么。 我使用LinuxUbuntu19作为操作系统。 这是我的密码:

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)

它不是将
self
作为参数读取,而是将其存储为
number\u 1
'Casio'
。当错误消息读取时,它丢失了编号2。如果希望
add()
能够获取任意值,则需要将它们作为参数添加到该方法中,而不是添加到
\uuuu init\uuu()
函数中。

必须将参数传递给add函数,而不是实例化该类的
\uuu init\uuuu

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)

初始化对象
'c'
时,运行的是
init
方法,因此需要将这两个参数传递给
init
方法。因此,在创建对象时,需要同时给出
'number\u 1'
'number\u 2'
。您只传入了
'Casio'
,python将其解释为
'number\u 1'
。Python还解释说没有
“number\u 2”
。以下是一些解决方案: 1:您可以使add()函数具有
init
具有的两个参数(
'number\u 1'
'number\u 2'
),并且只有
init
的参数是
self
'name'
。然后,您可以让
init
方法只执行
self.name=name
而不执行其他操作。2:如果不输入参数,可以通过为参数设置默认变量,使参数
'number\u 1'
'number\u 2'
可选:

def __init__(self, number_1="1", number_2="2"):

这是一个比编写一个没有代码的代码更好的解释(竖起大拇指!)谢谢你的解释!非常感谢你们,伙计们!