《Python简明教程》继承章节报错:‘SchoolMember’未定义求助
SchoolMember未定义错误的常见原因 Hey there! Let's break down why you're hitting that "SchoolMember is not defined" error even after copying the code from the tutorial. Here are the most likely culprits:
代码顺序搞反了:Python是从上到下逐行执行的,要是你先写了继承
SchoolMember的子类(比如Teacher或者Student),但SchoolMember这个父类的定义放在了子类后面,程序运行到子类的时候根本不知道父类是什么,自然会报错。一定要保证父类SchoolMember的代码块出现在所有子类定义的前面。正确的顺序示例:
# 先定义父类 class SchoolMember: def __init__(self, name, age): self.name = name self.age = age print('(Initialized SchoolMember: {})'.format(self.name)) def tell(self): print('Name:"{}" Age:"{}"'.format(self.name, self.age), end=" ") # 再定义子类 class Teacher(SchoolMember): def __init__(self, name, age, salary): SchoolMember.__init__(self, name, age) self.salary = salary print('(Initialized Teacher: {})'.format(self.name)) def tell(self): SchoolMember.tell(self) print('Salary: "{:d}"'.format(self.salary))拼写出现失误:Python是大小写敏感的语言,检查下你写的类名是不是和教程完全一致——比如是不是把
SchoolMember写成了schoolmember(全小写)、SchoolMemmber(多打了一个m)这类错误,一点点拼写差异都会导致程序识别不到这个类。缩进不符合规范:如果
SchoolMember类的缩进有问题(比如和其他代码块混在一起,没有保持统一的缩进层级),Python可能不会把它识别成一个有效的类定义。要确保class SchoolMember:顶格写,类内部的方法统一缩进4个空格(或者保持一致的缩进规则)。多文件场景漏导入:如果教程里的代码是拆分在多个文件里的,而你只复制了子类的代码,没把
SchoolMember所在的文件导入进来,也会触发这个错误。这种情况需要在子类文件开头加上from 父类文件名 import SchoolMember来导入父类。
你可以对照这几点逐一检查你的代码,大概率能快速定位问题!
内容的提问来源于stack exchange,提问作者Bstykemain

