【第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()
别跑,点个赞再走
上一篇下一篇

猜你喜欢

热点阅读