类型错误:__init__() 缺少 2 个必需的位置参数:“arr”和“n”
Posted
技术标签:
【中文标题】类型错误:__init__() 缺少 2 个必需的位置参数:“arr”和“n”【英文标题】:TypeError: __init__() missing 2 required positional arguments: 'arr' and 'n' 【发布时间】:2021-09-05 21:46:20 【问题描述】:这是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'
【问题讨论】:
Obj = Missing(n,arr)
您必须提供您在def __init__
中指定的两个参数arr
和n
。而且你不应该尝试在你的类定义中初始化它们。
不工作,'NameError: name 'n' is not defined'
@leaf_yakitori 你能再写一遍整个代码并粘贴到这里吗?
@Ajay Kathwate 已经在答案中添加了整个代码
【参考方案1】:
您需要将输入放在类之外,并在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)
【讨论】:
【参考方案2】:您的构造函数需要两个参数。你需要在它运行之前分配它。
你需要在类对象之外分配 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()
【讨论】:
以上是关于类型错误:__init__() 缺少 2 个必需的位置参数:“arr”和“n”的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到错误:__init__() 缺少 1 个必需的位置参数?
类型错误:initialize() 缺少 1 个必需的位置参数:'url'
错误:__ init __()缺少1个必需的位置参数:'rec'
如何修复modelformset错误:__init __()缺少1个必需的位置参数:'user'