You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

修正说明

  1. 给Course类的__init__添加number和title参数,直接将传入值赋值给实例属性
  2. 调整print_info的输出内容,增加Course Information:标题,把Title改为Course Title以匹配示例
  3. OfferedCourse类用super().__init__(number, title)正确调用父类构造函数,替代原错误的调用方式
  4. 将传入的instructor_name、term、class_time直接赋值给实例属性,不再设置空值
  5. 重写OfferedCourse的print_info方法,先调用父类方法输出基础信息,再输出派生类的新增属性
  6. 主程序中添加空行分隔两个课程的信息,让输出格式与示例完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:42:50