You need to enable JavaScript to run this app. Python实现找缺失数功能类实例化报__init__缺arr、n参数如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python实现找缺失数功能类实例化报__init__缺arr、n参数如何解决

报错原因
  • 你的Missing类的构造方法__init__显式要求传入arr、n两个位置参数,但你实例化类时写的Obj = Missing()没有传入任何参数,直接触发了参数缺失类型错误。
  • 额外的逻辑问题:你将输入读取语句直接写在类的全局属性位置,读取到的arr、n属于类公共属性,不会自动传递给实例的构造方法,属于类属性和实例属性的用法混淆。
可行修复方案

你可以选择以下任意一种方案修复,第二种写法更符合Python类的使用规范:

方案1:实例化时传入类属性值

仅修改实例化代码,其他逻辑保持不变:

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(Missing.arr, Missing.n)
print(Obj.MissingNumber())

方案2:输入逻辑移到类外部(推荐)

调整输入逻辑的位置,避免类属性滥用,同时优化除法为整数除法避免浮点数输出:

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

# 类外读取输入参数
n = int(input())
arr = list(map(int, input().split(" ")))
# 传入参数实例化类
obj = Missing(arr, n)
print(obj.MissingNumber())

内容的提问来源于stack exchange,提问作者Ajay Kathwate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 18:45:04