【第26天】python全栈从入门到放弃
2019-08-19 本文已影响0人
36140820cbfd
用反射做选课系统的代码
login
判断身份 并且根据身份实例化
根据每个身份对应的类 让用户选择能够做的事情
代码块
# 用反射做选课系统的代码
# login
# 判断身份 并且根据身份实例化
# 根据每个身份对应的类 让用户选择能够做的事情
class Manager:
OPERATE_DIC = [
('创造学生账号', 'create_student'),
('创建课程','create_course'),
('查看学生信息','check_student_info'),
]
def __init__(self,name):
self.name = name
def create_student(self):
print('创建学生账号')
def create_course(self):
print('创建课程')
def check_student_info(self):
print('查看学生信息')
class Student:
OPERATE_DIC = [
('查看所有课程', 'check_course'),
('选择课程', 'choose_course'),
('查看已选择的课程', 'choosed_course')
]
def __init__(self,name):
self.name = name
def check_course(self):
print('查看所有课程')
def choose_course(self):
print('选择课程')
def choosed_course(self):
print('查看已选择的课程')
def login():
username = input('user : ')
password = input('pwd : ')
with open('useinfo') as f:
for line in f:
user,pwd,ident = line.strip().split('|') # ident = 'Manager'
if user == username and pwd == password:
print('登录成功')
return username,ident #返回用户名和身份
import sys
def main():
usr,id = login() #拿到用户名,和用户的身份
print('user,id :',usr,id)
file = sys.modules['__main__']
cls = getattr(file,id) #Manager = getattr(当前文件,'Manager')
obj = cls(usr) #相当于实例化角色
operate_dic = obj.OPERATE_DIC
while True:
for num,i in enumerate(operate_dic,1): #1表示序号从1开始
print(num,i[0]) #打印每个元组的第一项,比如查看课程
choice = int(input('请输入数字:'))
choice_item = operate_dic[choice-1] #拿到列表里面的元组
getattr(obj,choice_item[1])()
main()
别跑,点个赞再走