类型错误:__init__() 缺少 2 个必需的位置参数:'arr' 和 'n'

时间:2021-06-22 09:40:05

标签: python class typeerror

这是python中缺少数字的问题。

class Missing:

    n = int(input())
    arr = list(map(int,input().split(" "))) 

    def __init__(self,arr,n):
        self.arr = arr
        self.n = n
    
    def MissingNumber(self):
        self.res = self.n*(self.n+1)/2
        self.sum_array = sum(self.arr)
        return "Missing no. is ",self.res-self.sum_array

Obj = Missing()
Obj.MissingNumber()

我收到此错误。 有人能解决吗?

Obj = Missing()
TypeError: __init__() missing 2 required positional arguments: 'arr' 
and 'n'

2 个答案:

答案 0 :(得分:0)

你的构造函数需要两个参数。您需要在它运行之前对其进行分配。

您需要在类对象之外分配 n 和 arr

class Missing:
    def __init__(self,arr,n):
        self.arr = arr
        self.n = n
    
    def MissingNumber(self):
        self.res = self.n*(self.n+1)/2
        self.sum_array = sum(self.arr)
        return "Missing no. is ",self.res-self.sum_array

if __name__ == '__main__':
    n = int(input())
    arr = list(map(int,input().split(" "))) 
    Obj = Missing(n,arr)
    Obj.MissingNumber()

答案 1 :(得分:0)

您需要将输入放在类之外,并在您创建实例时通过Obj = Missing(arr,n)

代码:

class Missing:
    def __init__(self,arr,n):
        self.arr = arr
        self.n = n
        
    def MissingNumber(self):
        self.res = self.n*(self.n+1)/2
        self.sum_array = sum(self.arr)
        return "Missing no. is ",self.res-self.sum_array
        
n = int(input())
arr = list(map(int,input().split(" "))) 
Obj = Missing(arr,n) 
print(Obj.MissingNumber())

结果:

5
1 2 3 4 5
('Missing no. is ', 0.0)