You need to enable JavaScript to run this app. Python调用类方法get_grade报错缺失required参数self的解决求助
优惠活动
大模型
产品
解决方案
定价
更多

Python调用类方法get_grade报错缺失required参数self的解决求助

错误原因

你遇到的get_grade() missing 1 required positional argument: 'self'报错,是因为调用类的实例方法时没有绑定对应实例:Python中没有加@classmethod、@staticmethod装饰器的普通类方法,默认第一个参数self需要接收调用该方法的实例本身,只有通过「实例.方法名()」的形式调用时,Python才会自动把实例作为self参数传入方法。
问题出在Course类的get_average_grade方法内:

value += Student.get_grade()

你直接通过类名Student调用get_grade方法,没有传入任何实例作为self参数,因此触发了参数缺失错误。

修复方案

将错误行修改为用循环遍历得到的student实例调用方法即可:

value += student.get_grade()
修复后完整可运行代码
class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade  # 0 - 100

    def get_grade(self):
        return self.grade

class Course:
    def __init__(self, name, max_students):
        self.name = name
        self.max_students = max_students
        self.students = []

    def add_student(self, student):
        if len(self.students) < self.max_students:
            self.students.append(student)
            return True
        return False

    def get_average_grade(self):
        value = 0
        for student in self.students:
            # 改为用实例调用方法,Python会自动传入self参数
            value += student.get_grade()

        return value / len(self.students)

s1 = Student("Tim", 19, 95)
s2 = Student("Bill", 19, 75)
s3 = Student("Jill", 19, 65)

course = Course("Science", 2)
course.add_student(s1)
course.add_student(s2)
print(course.get_average_grade())

运行后输出正确的平均成绩:85.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:24:00