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
相关产品推荐
相关产品推荐

