● 共两个文件:userInfo,reflex.py

alex|123456|Manager
hezewei|666|Student
taibai|2222|Teachar

userInfo

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/9/27 11:26
# @Author : zejin
# @File : reflex.py # 关于反射 class Manager:
OPERATE_DIC = [
("创建学生账号", "create_student"),
("创建课程", "create_course"),
("查看学生信息", "check_student")
] def __init__(self, name):
self.name = name def create_student(self):
print("创建学生账号") def create_course(self):
print("创建课程") def check_student(self):
print("查看学生信息") class Teachar:
OPERATE_DIC = [
("查看学生信息", "check_student"),
("给学生评分", "grage")
] def __init__(self, name):
self.name = name def check_student(self):
print("查看学生信息") def grage(self):
print("给学生评分") class Student:
OPERATE_DIC = [
("查看课程", "check_course"),
("选择课程", "choose_course"),
("查看已选择的课程", "chooosed_course")
] def __init__(self, name):
self.name = name def check_course(self):
print("查看课程") def choose_course(self):
print("选择课程") def chooosed_course(self):
print("查看已选择的课程") def login():
username = input("user:")
password = input("pwd:")
with open('userInfo') as f:
for line in f:
user, pwd, ident = line.strip().split("|")
if username == user and password == pwd:
print("登录成功!")
return username, ident
else:
return -1 import sys def main():
re = login()
while re == -1:
print("错误")
re = login()
user, id = re
file = sys.modules["__main__"] # 得到本页面
cls = getattr(file, id) # 得到本页面的某个类,例:class Manager
obj = cls(user) # 实例化此类的对象
opeate_dic = cls.OPERATE_DIC # 得到类中静态字段OPERATE_DIC
while True:
for num, i in enumerate(opeate_dic, 1):
print(num, i[0])
choice = int(input("\n请输入数字选择(输入-1结束)>>>"))
if choice == -1:
break
choice_item = opeate_dic[choice - 1]
getattr(obj, choice_item[1])() # choice_item[1])为对象中方法名 main()

reflex.py

Python中反射的简单应用的更多相关文章

  1. Python中json的简单读写操作

    Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  2. python中argparse模块简单使用

    python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...

  3. yaml在python中的应用简单整理

    #简单介绍============================================================== YAML使用寄主语言的数据类型,这在多种语言中流传的时候可能会引 ...

  4. python 中面向对象编程简单总结2

    1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...

  5. python中的类简单讲解

    类似其它的语言, Python 中的函数使用小括号( () )调用.函数在调用之前必须先定义.如果函数中没有 return 语句, 就会自动返回 None 对象.      Python 是通过引用调 ...

  6. python 中面向对象编程简单总结3--定制类

    声明:资源来自慕课网python学习课程,以下只是个人学习总结,仅供参考 1.Python类的特殊方法 特征:以  __ 开头并结尾的方法,比如用于print的__str__() , __getatt ...

  7. Python中Tk模块简单窗口设计

    Python中Tk和PyQt都可以设计小程序,区别在于:Tk界面美观度相对较差,但由于是Python的内置模块,最终生成的程序大小相比于PyQt较小. import tkinter # 导入TKint ...

  8. python中matplotlib 的简单使用

    1.简单折线图的画图,轴标签.图的颜色,风格,等等参数,本文只介绍最常用的几个参数: import matplotlib.pyplot as plt import numpy as np x = np ...

  9. (数据科学学习手札54)Python中retry的简单用法

    一.简介 retry是一个用于错误处理的模块,功能类似try-except,但更加快捷方便,本文就将简单地介绍一下retry的基本用法. 二.基本用法 retry: 作为装饰器进行使用,不传入参数时功 ...

随机推荐

  1. .eslintrc.js相关配置

    module.exports = { root: true, //此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为modul ...

  2. vscode 常用命令行

    Ctrl+Shift+P:  打开命令面板 打开一个新窗口: Ctrl+Shift+N  关闭窗口: Ctrl+Shift+W 新建文件 Ctrl+N 代码行缩进 Ctrl+[ . Ctrl+] 上下 ...

  3. cnblogs博客主题原来可以弄得这么美观

    参考了网友 https://www.cnblogs.com/maybreath/p/5253824.html的做法,没想到真的可以耶. 总想弄个方便的.简洁的.可以被搜索引擎搜到的博客.以前用过wor ...

  4. Struts2后台使用Request和Session方法

    在Struts2后台,如果需要使用Request和Session的话,可以通过下面的方法: 主要是利用了com.opensymphony.xwork2.ActionContext类以及ora.apac ...

  5. js常用算术运算符与一元运算符在做运算时不同类型的转换规则

    /** * 算术运算符:+, -, *, /, % * 当对非number类型的值进行运算(-, *, /, %)时,会将这些值先转换成number再运算,加法'+'运算除外, * 当对非number ...

  6. 【记录】vue构建项目npm install错误run `npm audit fix` to fix them, or `npm audit` for details

    今天构建vue项目执行npm install初始化后报错 run `npm audit fix` to fix them, or `npm audit` for details 出现这问题控制台会有一 ...

  7. go语言从例子开始之Example15.闭包

    Go 支持通过 闭包来使用 匿名函数.匿名函数在你想定义一个不需要命名的内联函数时是很实用的. 闭包简单理解,函数反回值是一个函数 Example: package main import " ...

  8. Spring MVC 配置Controller详解

    在SpringMVC中,对于Controller的配置方式有很多种,如下做简单总结 第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置: <!-- 表示将请求的URL ...

  9. 转载:java集合类数据结构分析

    数组是 最常用的数据结构.数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的.数组常用的场景有把:从数据库里读取雇员的信息存储为 EmployeeDetail[],把一个字符串转换并 ...

  10. 一个故事讲懂vue父子组件传值

    作者:李佳明同学链接:https://www.jianshu.com/p/2272b6ca0f0c 一个故事讲懂vue父子组件传值 讲故事前先讲代码 父组件向子组件传值 父组件数据传递给子组件可以通过 ...