You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义pair类获取数组最值返回None,遇AttributeError求助

问题分析与解决

你的代码问题根本不是pair类的问题,而是自定义函数getminmax没有返回创建好的minmax对象,导致调用后得到的是None,这才触发了AttributeError。

错误根源

Python中,函数如果没有显式写return语句,默认会返回None。你在getminmax里创建了minmax实例并修改了它的min和max属性,但最后没有把这个实例返回出去,所以执行minmax = getminmax(arr, arr_size)后,minmax是None,自然访问不了.min属性。

修复步骤

  1. 在getminmax函数的最后添加return minmax语句。
  2. 额外修复一个潜在bug:当数组长度n=1时,第一个if执行后,后面的if arr[0] > arr[1]会去访问arr[1],导致索引越界错误,需要把第二个if改成elif n > 1。

修复后的完整代码

class pair:
    def __init__(self):
        self.min = 0
        self.max = 0

def getminmax(arr: list, n: int) -> pair:
    minmax = pair()

    # 处理空数组的情况(可选,避免后续报错)
    if n == 0:
        return minmax

    # 如果只有一个元素,直接赋值
    if n == 1:
        minmax.min = arr[0] 
        minmax.max = arr[0]
        return minmax  # 提前返回,避免执行后面的逻辑

    # 如果元素数量大于1,初始化minmax
    elif n > 1:
        if arr[0] > arr[1]:
            minmax.min = arr[1]
            minmax.max = arr[0]
        else:
            minmax.min = arr[0]
            minmax.max = arr[1]

    # 遍历剩余元素更新最值
    for i in range(2, n):
        if arr[i] > minmax.max:
            minmax.max = arr[i]
        elif arr[i] < minmax.min:
            minmax.min = arr[i]

    # 必须返回创建好的minmax对象
    return minmax

# 测试代码
arr = [1000, 11, 445, 1, 330, 3000]
arr_size = 6
minmax = getminmax(arr, arr_size)
print('Minimum', minmax.min)
print('Maximum', minmax.max)

运行结果

Minimum 1
Maximum 3000

内容的提问来源于stack exchange,提问作者Data Stoner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:18:27