m0_61646154
2021-12-28 08:06
采纳率: 63.6%
浏览 49
已结题

python面向对象的列表如何建立

学校类:

使用一个名为name的实例变量记录学校名字
使用一个名为addr的实例变量记录学校地址
使用一个名为students的列表记录所有实例化后的学生对象
使用一个名为staffs的列表记录所有实例化后的教师对象
该类的构造方法有两个形参分别是name和addr,在构造方法中完成name和addr两个实例变量的初始化
定义一个名为enroll的方法,该方法有一个形参为学生对象该方法可以将传入的学生对象存储到students列表中
定义一个名为hire的方法,该方法有一个形参为教师对象。该方法可以将传入的学生对象存储到staffs列表中
定义一个名为print_info的方法,该方法可以打印学校的信息(具体信息显示规则见输出样例)
定义一个名为print_staffs的方法,该方法可以打印所有学生的信息(具体信息显示规则见输出样例)
定义一个名为print_students的方法,该方法可以打印所有教师的信息(具体信息显示规则见输出样例)
成员类:

成员类为教师类和学生类的基类
使用一个名为name的实例变量记录成员名字
使用一个名为age的实例变量记录成员年龄
使用一个名为sex的实例变量记录成员性别
定义一个名为tell的方法,在成员类中该方法不需要实现具体的代码
该类的构造方法有三个形参分别是name、age、sex。在构造方法中对实例变量name、age、sex进行初始化
教师类:

教师类为继承成员类的子类
除了基类中的实例变量,该类还有两个额外的实例变量
定义一个为salary的实例变量记录教师的薪水
定义一个为course的实例变量记录教师所教授的课程
该类的构造方法有五个形参分别是name、age、sex、salary、course。在构造方法中对五个实例变量进行初始化
重写基类中的tell方法,打印教师相关信息(具体信息显示规则见输出样例)
学生类:

学生类为继承成员类的子类
除了基类中的实例变量,该类还有两个额外的实例变量
使用一个名为stu_id的实例变量记录学生的学号
使用一个名为grade的实例变量记录学生的成绩
该类的构造方法有五个形参分别是name、age、sex、stu_id、grade。在构造方法中对五个实例变量进行初始化
重写基类中的tell方法,打印学生相关信息(具体信息显示规则见输出样例)


 
#学习类
class School:
    def __init__(self,name,addr,students,staffs):
        self.name=name
        self.addr=addr
        self.students=students
        self.staffs=staffs
    def enroll(self):
        self.students.append(self.)
#成员类
class Member:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def tell(self):
        return self.name,self.age,self.sex
# 教师类
class Teacher(Member):
    def __init__(self, name, age,sex, salary ,course):
        super().__init__(name,age,sex)
        self.salary=salary
        self.course=course
    def tell(self):
 
#学生类
class Student(Member):
    def __init__(self, name, age, sex, stu_id, grade):
        super().__init__(name, age, sex)
        self.stu_id = stu_id
        self.grade = grade
    def tell(self):
        return print()
 
# 输入待注册的学生数量
stu_num = int(input())
# 学生列表
stu_list = list()
for i in range(stu_num):
    # 获取学生的相关信息,属性与属性之间用空格间隔
    stu_name, stu_age, stu_sex, stu_id, stu_grade = input().split(" ")
    stu_age, stu_grade = map(int, (stu_age, stu_grade))
    stu_list.append([stu_name, stu_age, stu_sex, stu_id, stu_grade])
# 教师列表
teach_list = list()
teach_num = int(input())
for i in range(teach_num):
    # 获取教师的相关信息,属性与属性之间用空格间隔
    teach_name, teach_age, teach_sex, teach_salary, teach_course = input().split(" ")
    teach_age, teach_salary = map(int, (teach_age, teach_salary))
    teach_list.append([teach_name, teach_age, teach_sex, teach_salary, teach_course])
#实例化学校
school = School(name="学校", addr="地址")
for item in stu_list:
    stu_name, stu_age, stu_sex, stu_id, stu_grade = item
    #实例化学生
    s1 = Student(name=stu_name, age=stu_age, sex=stu_sex, stu_id=stu_id, grade=stu_grade)
    # 注册学生
    school.enroll(s1)
 
for item in teach_list:
    teach_name, teach_age, teach_sex, teach_salary, teach_course = item
    #实例化老师
    t1 = Teacher(name=teach_name, age=teach_age, sex=teach_sex, salary=teach_salary, course=teach_course)
    # 雇用老师
    school.hire(t1)
 
#打印学校信息
school.print_info()
#打印学生信息
school.print_stus()
#打印教师信息
school.print_staffs()

输入:
1
xiaom1 9 女 20211102 78
1
xiaom 48 女 1300 JAVA程序设计

输出:
学校的地址为地址
学生xiaom1的信息: 年龄-9 性别-女 学号-20211102 成绩-78
教师xiaom的信息: 年龄-48 性别-女 薪水-1300 课程-JAVA程序设计

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题