Python类构造函数参数不匹配错误排查与类实现求助
问题排查与代码修正
报错根源
你遇到的TypeError是因为Course类的构造函数__init__未定义接收number和title的参数,但创建Course实例时传入了course_number和course_title两个参数,导致参数数量不匹配。
除此之外,代码还有其他几处问题:
- OfferedCourse类调用父类构造函数时参数传递错误,且未将传入的
instructor_name、term、class_time赋值给实例属性,反而赋了空值/0 - Course类的
print_info方法输出文本与示例要求的Course Title不符 - Course类中
self.title初始值设为0不合理,应该是字符串类型
修正后的完整代码
class Course: # 定义接收number和title的构造函数 def __init__(self, number, title): self.number = number self.title = title # 修正输出格式,匹配示例要求 def print_info(self): print('Course Information: ') print(' Course Number:', self.number) print(' Course Title:', self.title) class OfferedCourse(Course): # 定义构造函数,接收所有属性参数 def __init__(self, number, title, instructor_name, term, class_time): # 正确调用父类构造函数,传递必要参数 super().__init__(number, title) # 将传入的参数赋值给实例属性 self.instructor_name = instructor_name self.term = term self.class_time = class_time # 重写print_info,新增派生类属性的输出 def print_info(self): super().print_info() print(' Instructor Name:', self.instructor_name) print(' Term:', self.term) print(' Class Time:', self.class_time) if __name__ == '__main__': course_number = input() course_title = input() o_course_number = input() o_course_title = input() instructor_name = input() term = input() class_time = input() my_course = Course(course_number, course_title) my_course.print_info() print() # 空行分隔,匹配示例输出格式 my_offered_course = OfferedCourse( o_course_number, o_course_title, instructor_name, term, class_time ) my_offered_course.print_info()
修正说明
- 给Course类的
__init__添加number和title参数,直接将传入值赋值给实例属性 - 调整
print_info的输出内容,增加Course Information:标题,把Title改为Course Title以匹配示例 - OfferedCourse类用
super().__init__(number, title)正确调用父类构造函数,替代原错误的调用方式 - 将传入的
instructor_name、term、class_time直接赋值给实例属性,不再设置空值 - 重写OfferedCourse的
print_info方法,先调用父类方法输出基础信息,再输出派生类的新增属性 - 主程序中添加空行分隔两个课程的信息,让输出格式与示例完全一致
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

