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

Python 3.8读取csv时报TypeError: 'dict' object is not callable

错误原因

触发TypeError: 'dict' object is not callable是命名冲突导致的变量遮蔽问题:

  • 你定义的类名为item
  • 在instantiate_from_csv类方法的循环逻辑中,写了for item in items:,这里的循环变量item覆盖了外层作用域的类名item
  • 循环内你本意是调用item类生成实例,但此时item已经指向csv读取到的单条字典数据,字典对象不能被当作函数/类调用,因此抛出类型错误。
修复方法

修改循环变量名,避免和类名重名,同时类方法内优先用传入的cls参数指代当前类(符合类方法的编码规范),修正后的instantiate_from_csv方法代码如下:

@classmethod
def instantiate_from_csv(cls):
    with open('items.csv', 'r') as f:
        reader = csv.DictReader(f)
        items = list(reader)

    for item_data in items:
        cls(
            name=item_data.get('name'),
            price=float(item_data.get('price')),
            quantity=int(item_data.get('quantity')),
        )

额外编码规范提示:Python类名推荐使用大驼峰命名格式,可将类名从item改为Item,从命名习惯上减少这类同名冲突问题。

修改后重新运行代码,即可正常读取csv数据生成实例,print(item.all)会正确输出所有实例组成的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:06:31