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

2024-05-23 19:27:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

init()缺少1个必需的位置参数:“number\u 2”

就像它把self当作一个参数,但我不知道为什么。 我使用的是Linux和ubuntu19操作系统。 这是我的密码:

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)

Tags: 代码selfaddnumber目标参数initlinux
3条回答

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

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

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

必须将参数传递给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)

相关问题 更多 >