● 共两个文件: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. 在php中定义常量时,const和define的区别?

    使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比define快很多. 1.const用于类成员变量的定义,一经定义,不可修改.Def ...

  2. 一、python基础之字符串的处理

    最近开始重新回过头来巩固一下python的基础知识,并在此做一些记录以便未来更好的回顾 一.字符串的大小写转换 title() 使用title()方法可以将字符串中每个单词的首字母大写 name = ...

  3. Java Web servlet中的cookie

    点击submit后: 点击查看Cookies: 在C:\Documents and Settings\Administrator\Cookies目录下面会有一个     hongten@webproj ...

  4. pychrm和linux进行链接上传代码

    众享周知:现在在windows文件中我们有pycharm工具帮我们去编辑python脚本,这会省去我们大把的时间让我们进行更多的脚本编辑.有这样的一种方法,我们可以使用pycharm编辑的脚本上传到l ...

  5. 最新版WinRAR5.61去广告代码教程分享(仅供学习交流)

    最新版WinRAR5.61去广告代码教程分享(仅供学习交流) 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,选择Chinese Simplified 64bit 安装即可. ...

  6. Java中File的处理

    不知道“文件”和“文件路径”是否存在的处理情况 1.如果是文件,先获取文件父路径,没有就生成父路径,然后再生成文件. public class TestMain { public static voi ...

  7. 42th 逻辑的连续性 取决于 细节的理解-------------我是个厨子:类的调用vs 对象调用方法

    类的调用vs 对象调用方法   class Cook5:    '''这是一个厨师的类'''        # 类是一系列对象相同的特征与技能的结合体        # 用变量表示特征(属性)    ...

  8. 项目使用gulp的配置编译sass笔记

    Node环境 通过 node.js 网站下载了安装包进行安装 node.js, npm也会一起安装 node --version # 查看node.js版本 npm --version #查看npm版 ...

  9. springColud父工程依赖配置

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...

  10. 【JS】js引擎执行过程

    概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...