按照上面去掉self的写法,重写整个程序
时间: 2024-12-18 14:28:45 浏览: 3
当然,我们可以按照上述思路重写整个程序,使其不再使用类的实例(即去除`self`)。下面是重写后的版本:
```python
class ClassRecords:
@classmethod
def add_student(cls, student_list, name, score):
"""
添加新学生及成绩,student_list是一个列表,用于存储学生信息
:param student_list: 包含学生姓名和成绩的列表,每个元素格式为 {'name': ..., 'score': ...}
:param name: 学生姓名,字符串类型
:param score: 成绩,数字类型
"""
if not isinstance(name, str) or not isinstance(score, (int, float)):
return "错误:请输入有效的姓名和成绩!"
else:
student_info = {"name": name, "score": score}
student_list.append(student_info)
@classmethod
def query_score(cls, student_list, name):
"""
查找并返回学生成绩
:param student_list: 包含学生姓名和成绩的列表,每个元素格式为 {'name': ..., 'score': ...}
:param name: 学生姓名,字符串类型
:return: 返回成绩,若无成绩返回None
"""
for info in student_list:
if info["name"] == name:
return info.get("score", None)
return None
# ...其他方法同样修改为类方法,并接受列表作为参数
@classmethod
def main(cls):
student_list = []
while True:
print("\n请选择操作:")
choice = input("1. 添加学生\n2. 查询成绩\n...")
if choice == "1":
name = input("请输入姓名:")
score = int(input("请输入成绩:"))
cls.add_student(student_list, name, score)
elif choice == "2":
name = input("请输入查询的学生姓名:")
result = cls.query_score(student_list, name)
if result is not None:
print(f"学生成绩: {result}")
else:
print("该学生不存在.")
# 主函数不需要再调用特定的实例方法
if __name__ == "__main__":
ClassRecords.main()
```
这个版本的`ClassRecords`类只包含类方法,它们可以直接作用于数据列表`student_list`,而无需维护单独的实例。这使得代码更简洁,也更适合处理静态数据。
阅读全文