● 共两个文件: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. 实验报告(五)&第七周学习总结

    实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. 掌握创建自定义包 ...

  2. Base64加密工具

    正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类--Base64类 在该类之中存在两个内部类:Base6 ...

  3. FZU 2060 The Sum of Sub-matrices(状态压缩DP)

    The Sum of Sub-matrices Description Seen draw a big 3*n matrix , whose entries Ai,j are all integer ...

  4. C#虚方法和抽象方法的区别

    一,如下例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa ...

  5. 从OLLVM4.0.0升级到LLVM8.0.1,并且给LLVM增加Pass 插件系统

    版本太低了,用得我这个揪心. 上周日决定把手头的ollvm从4.0.0升级到LLVM8.0.1. 里面的Pass的话,决定移植到8.0.1里面. 我习惯从代码上来动手 1:下载LLVM  https: ...

  6. Centos安装IDEA

    1.官网下载tar包 到https://www.jetbrains.com/idea 下载对应版本的文件 将其解压 tar zvxf idea下载文件.tar 进入到解压后文件夹的bin目录下执行 . ...

  7. 《代码大全2》读书笔记 Week 1

    <代码大全2>第一.二.三章 隐喻思维在西方是一个热门的话题,隐喻的认知功能在各个学科正受到越来越多的重视,依照我的理解,其实就是以众所周知或者理解主体熟悉的事物为符号去将新事物.新概念具 ...

  8. OpenCV常用基本处理函数(2)图像基本操作

    可以根据像素的行和列的坐标获取他的像素值.对 BGR 图像而言,返回值为 B,G,R 例如获取蓝色的像素值: img=cv2.imread('messi5.jpg')px=img[100,100]bl ...

  9. JVM&GC

    先回顾啥是JVM: 引用: 强引用(Strong Reference)•默认的赋值语句可以生成一个强引用•GC时不会被释放 软引用(Soft Reference)•仅被java.lang.ref.So ...

  10. loadRunner之参数关联

    录制脚本,对用户名和密码进行参数化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours ...