TypeError: __str__ returned non-string

TypeError: __str__ returned non-string

class Course(object):
    def __init__(self,cnum,name):
        self.name = name
        self.cnum = cnum
    def __str__(self):
        return 'Course:' , self.cnum  , self.name

class AssigendCourse(Course):
    def __init__(self,Course,dept,year,semester):
        self.name = Course.name
        self.cnum = Course.cnum
        if dept == 'SE' or dept == 'CE' or dept == 'CIE' or dept == 'ME':
            self.dept = dept
        else:
            self.dept = None
        if year >= 1 and year <= 4:
            self.year = year
        else:
            self.year = None
        if semester >= 1 and semester <= 3:
            self.semester = semester
        else:
            self.semester = None
    def __str__(self):
        return 'Course: ' , self.name , self.cnum

导致此类错误

TypeError: __str__ returned non-string (type tuple)

我不知道我需要为 __str__ 函数使用什么类型的语法,以便在使用时获取对象的打印:

it = iter(db)
for i in it:
    print(i)

你的__str__方法return元组:

def __str__(self):
    return 'Course:' , self.cnum  , self.name

逗号使它成为元组。

您需要加入这些值;我推荐字符串格式:

def __str__(self):
    return 'Course: {} {}'.format(self.cnum, self.name)