Python代码出现SyntaxError语法错误:__init__方法定义处报错求助
排查并修复你的Python语法错误
首先,你遇到的SyntaxError: invalid syntax直接原因非常明确——def和__init__之间缺少空格!Python对函数定义的语法要求很严格,def关键字后面必须跟一个空格,再写函数名,不然解释器会把def__init__当成一个非法的标识符,直接抛出语法错误。
具体错误点与修复步骤
1. 核心语法错误修复
把出错的那一行:
def__init__(self, name='', school='', grade=''):
改成:
def __init__(self, name='', school='', grade=''):
(注意def和__init__之间添加一个空格)
2. 其他潜在问题修复(避免后续运行报错)
除了核心语法错误,你的代码还有几个小问题,提前修复能避免后续运行时踩坑:
raw_input版本兼容问题:如果使用Python3,raw_input()已经被重命名为input(),直接用input()即可;如果是Python2,raw_input()是正确的,但要注意Python2里的input()会执行输入的代码,存在安全风险,所以Python2环境下建议继续用raw_input()。- 拼写错误:
studnet应该是student(在school = raw_input('What is the studnet\'s school: ')这一行)。 - 成绩选项遗漏:
get_grade方法里判断有效成绩的列表漏掉了'1',输入1会被判定为无效,应该改成['k','1','2','3','4','5']。 - 未完成的代码:最后一行
print('I\'m ...没有闭合引号和括号,需要补全逻辑,比如改成print("I'm sorry, that's not a valid grade. Please try again.")。 - 缺失的方法定义:代码里调用了
self.print_student()但没定义这个方法,需要补上才能正常运行。
修复后的完整代码示例
class Student(object): def __init__(self, name='', school='', grade=''): # 修复了def和__init__之间的空格 if not name: name = input("What is the student's name: ") # Python3用input,Python2替换为raw_input if not school: school = input("What is the student's school: ") # 修复了studnet的拼写错误 if not grade: grade = self.get_grade() self.name = name self.school = school self.grade = grade self.print_student() def get_grade(self): while True: grade = input("What is the student's grade: [K, 1-5]") # 修复了遗漏的'1',统一用lower()做不区分大小写判断 if grade.lower() not in ['k','1','2','3','4','5']: print("I'm sorry, that's not a valid grade. Please try again.") # 补全未完成的print语句 else: return grade.lower() # 返回标准化后的成绩 def print_student(self): # 补上缺失的打印方法 print(f"Student Info:\nName: {self.name}\nSchool: {self.school}\nGrade: {self.grade}") # 测试运行 student1 = Student()
总结
这类语法错误属于Python里最基础的格式规范问题,记住函数定义时def和函数名之间必须有空格,类的实例方法第一个参数必须是self(你这里是正确的),就能避免这类低级错误啦。
内容的提问来源于stack exchange,提问作者Gayathra Ranasinghe
相关产品推荐
相关产品推荐

