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

Python自定义Analyzer类新实例保留旧实例reviews旧数据问题

问题原因

你遇到的是Python类属性和实例属性的混用问题,核心原因有两点:

  • 直接在Analyzer类定义下声明的dataframe和reviews是类属性,所有实例共享同一份内存。reviews是可变的列表类型,任意实例对它的修改都会同步到所有其他实例,这就是旧数据残留的核心原因。
  • 你当前__init__方法里的reviews = self.dataframe['Reviews'].tolist()是创建了局部变量,根本没有绑定到实例上,你实际运行的代码应该是直接操作了类共享的reviews属性,才会出现不同品牌的数据累加的情况。

另外你代码里的del analysis不会清理类属性,只是删除了实例的引用,类属性本身还是保留在Analyzer类的内存空间中,下次实例化还是会复用之前的列表。

修复方案

所有实例独有的属性统一放到__init__方法中初始化,不要在类定义层声明可变类型的属性:

import pandas as pd

class Analyzer:
    def __init__(self, brand):
        # 所有实例专属属性在初始化时定义,每个实例都会创建新的独立对象
        self.dataframe = pd.read_csv(brand)
        self.reviews = self.dataframe['Reviews'].tolist()

    def analyze(self):
        # 后续逻辑直接操作self.reviews即可,不同实例之间完全隔离
        # 你的分析代码...

修改后再运行主逻辑,每个品牌的reviews就会是对应CSV文件里的实际条数,不会出现累加问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:48:04