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

Python中使用.append或.insert时类实例出现重复项问题求助

问题分析与解决

你代码的核心问题是错误地将实例属性定义成了类属性,导致所有Student实例共享同一组属性,包括subjects列表。

在__init__方法中,你用Student.name = name这种方式赋值,相当于把属性绑定到Student类本身,而不是每个独立的实例上。这样不管创建多少个Student对象,它们都会共用同一个subjects列表——你用student001添加元素,student002的subjects也会跟着变,反之亦然,最终就出现了重复值。

修正后的代码

class Student:
    def __init__(self, name, surname, age):
        self.name = name
        self.surname = surname
        self.age = age
        self.subjects = []  # 每个实例拥有独立的列表

student001 = Student("Mary", "Stone", 17)
student002 = Student("James", "Lincoln", 16)

student001.subjects.append("English")
student002.subjects.append("English")

print(student001.subjects)
print(student002.subjects)

student001.subjects.append("P.E.")
student002.subjects.insert(1, "P.E.")

print(student001.subjects)
print(student002.subjects)

运行结果

['English']
['English']
['English', 'P.E.']
['English', 'P.E.']

修正逻辑很简单:把所有属性赋值从Student.xxx改成self.xxx,这样每个Student实例都会拥有自己独立的属性和subjects列表,互相操作不会影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:25:27