"""
编写学员实体类,对应属性包含:学号、姓名、性别。
编写学员名单管理类,实现删除学员方法、查询学员方法。
学员实体类添加一个私有属性成绩,要求实现对应的 getter 和 setter。
实现更新学员、添加学员操作。
"""
知识点
实体类
成员变量属性
方法
Python 类型注解
Python 数据类dataclas, @dataclass装饰器
from dataclasses import dataclass, field
@dataclass
class Student:
"""
自己根据题目要求实现
"""
number : int
name : str
gender : str
__grades : float = field(default=None, init = False)
def grades_get(self):
print(f"学号为{self.number}的学生成绩为{self.__grades}分")
def grades_set(self, new_grade:float):
self.__grades = new_grade
class StudentList:
def __init__(self, student_list: list[Student]):
self.s_list = student_list
def get(self, student_id: int):
"""
根据 student_id 查询信息
"""
for i in self.s_list:
if i.number == student_id:
return i
def delete(self, student_id: int):
"""
根据 student_id 删除信息
"""
for i in self.s_list:
if i.number == student_id:
self.s_list.remove(i)
def update(self, student: Student):
"""
更新学生的信息
"""
for i in self.s_list:
if i.number == student.number:
index = self.s_list.index(i)
self.s_list[index] = student
def save(self, student: Student):
"""
添加新学生
"""
self.s_list.append(student)
if __name__ == '__main__':
# 入参自己定义
s1 = Student(name="张三", number=1, gender="男")
s2 = Student(name="李四", number=2, gender="男")
s3 = Student(name="小五", number=3, gender="女")
# print(s3)
# 初始化一个成员名单
s_list = StudentList([s1, s2, s3])
s1.grades_set(65)
s2.grades_set(82)
s3.grades_set(90)
print(s1, s_list.s_list)
print(s_list.get(1))
s_list.get(2).grades_get()
s_list.get(3).grades_set(60)
s_list.get(3).grades_get()
s4 = Student(name="小哥哥", number=4, gender="男")
s_list.save(s4)
print(s_list.s_list)
s5 = Student(name="小姐姐", number=4, gender="女")
s_list.update(s5)
print(s_list.get(4))
s_list.delete(4)
print(s_list.s_list)
# print(s_list.get(2))
# #实现save
# s_list.save()
# # 实现update
# s_list.update()
# # 实现get()方法
# s_list.get()
# # 实现delete
# s_list.delete()