学习Python类与对象时遇第13行语法错误,求技术协助
代码问题修复及说明
首先解决你提到的第13行语法错误:else块里的print语句缺少一个右括号,补充后即可解决语法报错。
除此之外,代码还有几处逻辑和规范问题,一并修复:
- 类名规范:Python类名建议采用大驼峰命名法,将
teacher改为Teacher,student改为Student。 - 实例方法调用错误:
assigned_student是Teacher类的实例方法,需通过实例对象调用,而非直接以函数形式调用。 - if条件逻辑错误:
student.year == self是把学生年级和教师实例做比较,逻辑完全错误,这里调整为判断学生科目是否和教师科目匹配(可根据你的实际需求修改条件)。
修复后的完整代码:
class Teacher: def __init__(self, name, year, subject): self.name = name self.year = year self.subject = subject def assigned_student(self, student): # 修正条件:年份相等且科目匹配 if student.year == self.year and student.subject == self.subject: print("Hello, {name}! You will be in my class of {subject}".format(name=student.name, subject=self.subject)) else: # 补充缺失的右括号 print("Sorry {name}. I will not be your teacher this year".format(name=student.name)) class Student: def __init__(self, name, year, subject): self.name = name self.year = year self.subject = subject teacher_one = Teacher("Rodolfo", 6, "Math") student_one = Student("Chino", 6, "Math") # 正确调用实例方法 teacher_one.assigned_student(student_one)
关键错误点解释
- 第13行语法错误:
print函数的括号未闭合,Python解释器无法识别语句结束,补充)即可解决。 - 实例方法调用错误:
assigned_student方法依赖Teacher实例的属性(self.year、self.subject),必须通过实例.方法()的形式调用。 - 条件逻辑错误:
student.year == self将整数(年级)和Teacher对象比较,结果永远为False,调整为合理的业务判断后,才能正确执行分支逻辑。
内容的提问来源于stack exchange,提问作者Rodolfo Peralta
相关产品推荐
相关产品推荐

