类型错误:__str__ 返回非字符串(类型 NoneType)

0 python inheritance nonetype

因此,对于我在 uni 的 Python 课程中的最后一次评估,我必须编写一个由三个对象组成的程序,其中两个是继承的。我一直遇到障碍,尤其是关于最后两个对象。这是我的代码:

class Course:
    def __init__(self,title="",ID=0):
        self._ID = ID
        self._title = title

    def getID(self):
        return self._ID

    def getTitle(self):
        return self._title

    def setTitle(self,title):
        self._title = title

    def setID(self,ID):
        self._ID = ID

    def __repr__(self):
        return "Title: " + self._title + "ID: " + str(self._ID)

class OfferedCourse(Course):
    def __init__(self,title="",ID=0,enrollment=[]):
        super().__init__(title,ID)
        self._enrollment = len(enrollment)

    def getEnrollment(self):
        return self._enrollment

    def addStudent(self,stu):
        if stu in enrollment:
            print("Student is already enrolled.")
        else:
            enrollment.append(stu)

    def dropStudent(self,stu):
        if stu in enrollment:

    def __repr__(self):
        super().__repr__() + "Enrollment: " + str(self._enrollment)

class StudentCourse(Course):
    def __init__(self,grade,ID=0,title=""):
        super().__init__(title,ID)
        self._grade = grade

    def getGrade(self):
        return self._grade

    def setGrade(self,grade):
        self._grade = grade

    def __repr__(self):
        super().__repr__() + "Grade: " + str(self._grade)   
def main():
#Set primary course
lego=Course("Lego Design",32013)
#display course
print(lego)
#Set OfferedCourse
bonk=OfferedCourse("Matoran History",82932,["Josh","Rick","Greg","Chris"])
#Display OfferedCourse
print(bonk)
#Set StudentCourse
lp=StudentCourse("History of Nu-Metal",57859,82)
#display Student Course
print(lp)
Run Code Online (Sandbox Code Playgroud)

在第 60 行左右,我收到错误:
TypeError: str returns non-string (type NoneType) 我对发生的事情很迷茫。

Car*_*ate 6

您的__repr__s 没有明确返回任何内容。你建立一个字符串,然后把它扔掉,导致None隐式返回。

只需添加一个return

def __repr__(self):
  return super().__repr__() + "Grade: " + str(self._grade) 
Run Code Online (Sandbox Code Playgroud)