如何从一个类的函数访问另一个类的函数输出

2024-09-29 03:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个班,课程和学生。这门课程有一个给学生打分的功能。我试图在Student中建立一个函数,该函数取该分数,并显示特定学生的总分

class courseClass(object):

def grade(self, student, grade):
        self.grade = grade
        if self.grade == 1:
            print("Student passed mandatory assignment")
        elif self.grade == 0:
            print("Student failed mandatory assignment")
        elif self.grade != 0 or 1:
            raise Exception("score is out of pattern range")

course_instance = courseClass()
course_instance.grade(student1, 1) 


class Student(object):

def grade_status(self, student):
        return [i.grade for i in self.grade]

student1 = Student("Bob Bobson", 20, 58008)
x = Student.grade_status(student1)
print(x)

AttributeError:“Student”对象没有属性“grade”

我认为它需要这样做:

def grade_status(self, grade):
        self.grade =

但我不知道如何使它等于在成绩函数中给出的分数(它会知道它被分配给哪个学生吗?)


Tags: 函数selfobjectdefstatusstudent学生分数
2条回答

我不知道这是否是你想要做的

class courseClass(object):

def __init__(self, student, grade):
    self.student = student
    self.grade = grade

def grade_status(self):
    if self.grade == 1:
        return "Student passed mandatory assignment"
    elif self.grade == 0:
        return "Student failed mandatory assignment"
    elif self.grade != 0 or 1:
        raise Exception("score is out of pattern range")




class Student(object):
    def __init__(self, name, age, random_number):
        self.name = name
        self.age = age
        self.random_number = random_number

student1 = Student("Bob Bobson", 20, 58008)
course_instance = courseClass(student1,0)
x = course_instance.grade_status()
print(x)

这里只有一个设计(请随意更改评分系统):

class Course:
    """
    Models a course being taught, for example: geometry
    """

    def __init__(self, course_name):
        self._course_name = course_name
        self._enrollment = {} # No students so far


    @property
    def course_name(self):
        """Get the course_name."""
        return self._course_name


    def enroll_student(self, student):
        """
        enroll student in this course
        """
        self._enrollment[student] = None # no grade so far
        student.add_course(self) # show that student is taking this course
        return self


    def enrollment(self):
        """
        generate students enrolled in course
        """
        for student, grade in self._enrollment.items():
            yield student, grade


    def assign_grade(self, student, grade):
        """
        assign grade to a student
        """
        assert student in self._enrollment
        self._enrollment[student] = grade
        return self


    def get_grade(self, student):
        """
        return a student's grade
        """
        return self._enrollment[student]


class Student:
    """
    Models a student
    """

    def __init__(self, name):
        self._name = name
        self._courses = []


    @property
    def name(self):
        """Get student name"""
        return self._name


    def add_course(self, course):
        self._courses.append(course)
        return self


    def courses(self):
        for course in self._courses:
            yield course


geometry = Course('geometry')
history = Course('history')
john_doe = Student('john doe')
jane_doe = Student('jane_doe')

geometry.enroll_student(john_doe)
geometry.enroll_student(jane_doe)
history.enroll_student(jane_doe)

geometry.assign_grade(john_doe, 1)
geometry.assign_grade(jane_doe, 2)
history.assign_grade(jane_doe, 1)

# print all the geometry grades
for student, grade in geometry.enrollment():
    print(student.name, grade)

# print all of john_doe's courses and grades:
for course in john_doe.courses():
    print('john_doe:', course.course_name, course.get_grade(john_doe))
for course in jane_doe.courses():
    print('jane_doe:', course.course_name, course.get_grade(jane_doe))

印刷品:

john doe 1
jane_doe 2
john_doe: geometry 1
jane_doe: geometry 2
jane_doe: history 1

相关问题 更多 >