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

Python3类中重写函数报错:'int'对象不可下标访问,求解答

解决Python类方法改写时的'int' object is not subscriptable错误

嗨,这个问题我刚学类的时候也踩过一模一样的坑!'int' object is not subscriptable本质就是你试图用下标(比如[0]或者[0][2])去访问一个整数变量,而整数根本没有下标属性,自然就报错了。

结合你说的原函数正常、改类后出错的情况,大概率是类的实例变量初始化或者方法调用时的变量混淆,我给你拆解下常见的错误场景和修复方案:

先看原函数的正常逻辑(模拟你的场景)

假设你的原函数大概是这样的,能正常输出目标矩阵:

def get_cost_matrix():
    # 初始化一个3行4列的全0矩阵
    cost = [[0]*4 for _ in range(3)]
    # 填充矩阵数值
    cost[0][2] = 3200
    cost[0][3] = 8600
    cost[1][0] = 1200
    cost[1][1] = 1200
    cost[1][3] = 3200
    cost[2][0] = 2400
    cost[2][1] = 2400
    cost[2][2] = 1200
    return cost

print(get_cost_matrix())
# 输出:[[0, 0, 3200, 8600], [1200, 1200, 0, 3200], [2400, 2400, 1200, 0]]

你可能犯的错误:初始化实例变量成了整数

很多人刚写类的时候,会把实例变量误初始化为整数,比如这样:

class CostMatrix:
    def __init__(self):
        self.cost = 0  # 这里错了!应该初始化列表,不是整数

    def calculate_matrix(self):
        # 这里试图给整数self.cost用下标赋值,直接触发错误
        self.cost[0][2] = 3200
        self.cost[0][3] = 8600
        # ... 后续填充逻辑
        return self.cost

cm = CostMatrix()
cm.calculate_matrix()  # 报错:'int' object is not subscriptable

正确的改写方式

只需要把类初始化时的self.cost改成和原函数一样的全0矩阵即可:

class CostMatrix:
    def __init__(self):
        # 初始化3行4列的全0矩阵,和原逻辑一致
        self.cost = [[0]*4 for _ in range(3)]

    def calculate_matrix(self):
        # 填充矩阵的逻辑完全复用原函数的代码
        self.cost[0][2] = 3200
        self.cost[0][3] = 8600
        self.cost[1][0] = 1200
        self.cost[1][1] = 1200
        self.cost[1][3] = 3200
        self.cost[2][0] = 2400
        self.cost[2][1] = 2400
        self.cost[2][2] = 1200
        return self.cost

# 调用测试
cm = CostMatrix()
result = cm.calculate_matrix()
print(result)
# 输出:[[0, 0, 3200, 8600], [1200, 1200, 0, 3200], [2400, 2400, 1200, 0]]

其他可能的坑点

如果上面的修复没用,可以检查这两个地方:

  • 方法内部是否不小心把self.cost重新赋值成了整数(比如写了self.cost = 0或者self.cost = some_number)
  • 是否在调用方法时,把类实例的属性和局部变量搞混了(比如方法里用了局部变量cost而不是self.cost)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:16:15