- 拓展知识“ _ _dict _ _”
class A(object):
a = 0
def __init__(self):
self.b = 1
aa = A()
# 返回类内部所有属性和方法对应的字典
print('A.__dict__')
# 返回实例属性和值组成的字典
print('aa.__dict__')
程序——三个文件
main.py
from managerSystem import *
if __name__ == '__main__':
student_manager = StudentManager()
student_manager.run()
student.py
class Student(object):
def __init__(self, name, gender, tel):
self.name = name
self.gender = gender
self.tel = tel
def __str__(self):
return f'学员名字是{self.name},性别是{self.gender},电话号码是{self.tel}'
managerSystem.py
from student import *
class StudentManager(object):
def __init__(self):
self.student_list = []
def run(self):
# self.load_student()
while True:
self.show_menu()
menu_num = int(input('请输入您想要的功能序号:'))
if menu_num == 1:
self.add_student()
pass
elif menu_num == 2:
self.del_student()
pass
elif menu_num == 3:
self.modify_student()
pass
elif menu_num == 5:
self.show_student()
pass
elif menu_num == 4:
self.search_student()
pass
elif menu_num == 6:
self.save_student()
pass
elif menu_num == 7: # 退出系统
break
@staticmethod # 不用改变和传参的静态方法
def show_menu():
print('------------------------------------------------------------')
print('选择你的功能:')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员信息')
print('4.查询学员信息')
print('5.查询所有学员信息')
print('6.保存学员信息')
print('7.退出系统')
print('------------------------------------------------------------')
def add_student(self):
name = input('请输入学员的姓名:')
gender = input('请输入学员的姓别:')
tel = input('请输入学员的手机号:')
student = Student(name, gender, tel)
self.student_list.append(student)
# print(self.student_list)
print(student)
pass
def del_student(self):
name = input('请输入您想删除学员的姓名:')
for i in self.student_list:
if i.name == name:
self.student_list.remove(i)
print('删除成功!!!')
break
else:
print('查无此人')
pass
def modify_student(self):
name = input('请输入您想修改学员的姓名:')
for i in self.student_list:
if i.name == name:
self.student_list.remove(i)
self.add_student()
print('修改成功')
break
else:
print('查无此人')
pass
def search_student(self):
name = input('请输入您想查询学员的姓名:')
for i in self.student_list:
if i.name == name:
print(f'学员名字是{i.name},性别是{i.gender},电话号码是{i.tel}')
break
else:
print('查无此人')
pass
def show_student(self):
print('名字t性别t电话号码')
for i in self.student_list:
print(f'{i.name}t{i.gender}t{i.tel}')
pass
def save_student(self):
# 打开文件
f = open('student.data', 'w')
# 文件写入数据
# 注意一 列表推导式,将列表里面的数据转换成字典
new_list = [i.__dict__ for i in self.student_list]
# 注意二 文件内数据要求为字符串类型,需要先将数据类型转换成字符串才能进行文件写入
f.write(str(new_list))
f.close()
pass
def load_student(self):
try:
f = open('student.data', 'r')
except:
f = open('student.data', 'w')
else:
data = f.read()
# 文件读取数据都是字符串且字符传内部为字典数据,需要转换数据类型在转换字典为对象后存储到学员列表
# 文件读取数据都是字符串且字符传内部为字典数据,需要转换数据类型在转换字典为对象后存储到学员列表
new_list = eval(data)
self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
finally:
f.close()
pass



