反射应用(能简化代码,更加优美)

import sys

def login():
    username = input("user:")
    password = input("pwd:")
    with open("userinfo","r",encoding="utf-8") as f:
        for line in f:
            user,pwd,ident = line.strip("\n").split("|")
            if user == username and pwd == password:
                print("登录成功")
                return user,ident

class Manager:
    OPERATE_LIST = [
        ("创建学生账号", "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_LIST = [
        ("查看课程", "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('查看已选择的课程')

class Teacher:
    OPERATE_LIST = [
        ("查看已有学生", "check_student"),
        ('查看已有学生', 'check_student'),
        ('查看学生信息', 'check_info')
    ]
    def __init__(self, name):
        self.name = name

    def check_student(self):
        print("查看已有学生")

    def check_student(self):
        print('查看已有学生')

    def check_info(self):
        print('查看学生信息')

def main():
    user,id = login()
    print(user,id)
    file = sys.modules["__main__"]
    # print(file)
    cls = getattr(file,id)
    obj = cls(user)
    operatr_list = cls.OPERATE_LIST
    while True:
        for i in enumerate(operatr_list,1):
            print(i)
        num = input("选择:")
        if num.isdigit():
            num = int(num) - 1
            choose = operatr_list[num][1]
            # print(choose)
            getattr(obj, choose)()
        elif num.upper() == "Q":
            break

        else:
            print("重新输入")


main()

userinfo:

abc|123|Manager
ly|123|Student
yan|123|Teacher
posted @ 2019-03-26 10:28  杨fj  阅读(98)  评论(0编辑  收藏  举报