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

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条回答 默认 最新

  • 陈年椰子 2021-12-31 09:27
    关注

    给一个对学校类的完善方式
    这个是原来的内容

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

    完善内容就是把上面的需求( # 位置内容) 明确到每个属性或者方法
    得到以下结果

    #学校类:
    class School:
        def __init__(self,name,addr):# 该类的构造方法有两个形参分别是name和addr,在构造方法中完成name和addr两个实例变量的初始化 , 所以要删除 ,students,staffs
            self.name=name  # 使用一个名为name的实例变量记录学校名字
            self.addr=addr # 使用一个名为addr的实例变量记录学校地址
            self.students= []  # 使用一个名为students的列表记录所有实例化后的学生对象
            self.staffs=[] # 使用一个名为staffs的列表记录所有实例化后的教师对象
        def enroll(self, student_item ): # 定义一个名为enroll的方法,该方法有一个形参为学生对象该方法可以将传入的学生对象存储到students列表中
            self.students.append(student_item)
        def hire(self, theacher_item ): # 定义一个名为hire的方法,该方法有一个形参为教师对象。该方法可以将传入的教师对象存储到staffs列表中     此出需求有误, 应该为教师对象
            self.staffs.append(theacher_item)
        def print_info(self):
            print("{}学校的地址为{}".format(self.name,self.addr))
        def print_staffs(self):  # 定义一个名为print_staffs的方法,该方法可以打印所有学生的信息(具体信息显示规则见输出样例)
            for s in self.staffs:
                s.print_info()    # staffs 的类也要有 print_info 方法
        def print_students(self): # 定义一个名为print_students的方法,该方法可以打印所有教师的信息(具体信息显示规则见输出样例)
            for s in self.students:
                s.print_info()    # student 的类也要有 print_info 方法
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)