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

Python面向对象编程:为什么无法向Student类的列表属性添加元素?

问题原因

你代码里存在两个核心错误:

  • 列表的append()方法是原地修改列表,执行后的返回值固定为None,你写的self.all_grades = self.all_grades.append(newest_grade)相当于直接把存储成绩的列表覆盖成了None,这是你得到None类型的核心原因。
  • 实例化Student类时,__init__方法要求传入name参数,你写的Josh = Student()缺少了必填的name参数,运行会直接抛出参数缺失报错。
  • 额外优化:现有get_mean方法只把平均值存到了实例属性里,没有返回值,调用时无法直接拿到计算结果,建议补充return逻辑。

修复后的完整代码

class Student:
    
    def __init__(self, name):
        self.name = name
        self.all_grades = []
        
    def add_exam(self, newest_grade):
        self.newest_grade = newest_grade
        # 直接调用append即可,不需要重新赋值给all_grades
        self.all_grades.append(newest_grade)
              
    def get_mean(self):
        self.average = sum(self.all_grades)/len(self.all_grades)
        # 补充返回值,调用方法可直接拿到平均分
        return self.average

# 实例化时传入必填的name参数
Josh = Student("Josh")
Josh.add_exam(72)

验证结果

修复后执行print(Josh.all_grades)会输出[72],调用Josh.get_mean()会返回平均分72.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:03