Python场景下不向子类传父类属性如何访问父类特定属性
错误原因
- 父类
School的__init__方法强制要求传入4个位置参数,子类Student调用super().__init__()时未传入任何参数,导致父类初始化失败,Schname等父类属性根本没有被创建。 - 子类
Student的构造方法没有预留接收父类参数的入口,无法将学校属性值传递给父类完成初始化。
修复方案
修改子类的构造方法,增加接收父类所需参数的入口,调用父类构造方法时传入对应参数即可:
class School(): def __init__(self,Name,Room,Teacher,Student): self.Schname = Name self.Schroom = Room self.Schteacher = Teacher self.Schstudent = Student class Student(School): # 增加父类所需的四个参数 def __init__(self, sch_name, sch_room, sch_teacher, sch_stu_count): self.name = [] self.grade=[] self.ID=[] # 调用父类构造时传入参数 super().__init__(sch_name, sch_room, sch_teacher, sch_stu_count) def StudentData(self,name,grade,ID): self.name.insert(0,name) self.grade.insert(0,grade) self.ID.insert(0,ID) def StudentInfo(self): for i in range(len(self.name)): print(f"{self.name[i]} is in {self.Schname}")
调用测试
# 实例化时先传入学校相关参数 stu_obj = Student("实验中学", "教学楼A区", "王主任", 1200) # 录入学生数据 stu_obj.StudentData("张明", "高二5班", "20230512") stu_obj.StudentData("刘畅", "高二7班", "20230709") # 输出信息 stu_obj.StudentInfo()
运行后输出:
刘畅 is in 实验中学 张明 is in 实验中学
内容的提问来源于stack exchange,提问作者Ehsan d
相关产品推荐
相关产品推荐

