Python中反射的简单应用
● 共两个文件: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中反射的简单应用的更多相关文章
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
- yaml在python中的应用简单整理
#简单介绍============================================================== YAML使用寄主语言的数据类型,这在多种语言中流传的时候可能会引 ...
- python 中面向对象编程简单总结2
1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...
- python中的类简单讲解
类似其它的语言, Python 中的函数使用小括号( () )调用.函数在调用之前必须先定义.如果函数中没有 return 语句, 就会自动返回 None 对象. Python 是通过引用调 ...
- python 中面向对象编程简单总结3--定制类
声明:资源来自慕课网python学习课程,以下只是个人学习总结,仅供参考 1.Python类的特殊方法 特征:以 __ 开头并结尾的方法,比如用于print的__str__() , __getatt ...
- Python中Tk模块简单窗口设计
Python中Tk和PyQt都可以设计小程序,区别在于:Tk界面美观度相对较差,但由于是Python的内置模块,最终生成的程序大小相比于PyQt较小. import tkinter # 导入TKint ...
- python中matplotlib 的简单使用
1.简单折线图的画图,轴标签.图的颜色,风格,等等参数,本文只介绍最常用的几个参数: import matplotlib.pyplot as plt import numpy as np x = np ...
- (数据科学学习手札54)Python中retry的简单用法
一.简介 retry是一个用于错误处理的模块,功能类似try-except,但更加快捷方便,本文就将简单地介绍一下retry的基本用法. 二.基本用法 retry: 作为装饰器进行使用,不传入参数时功 ...
随机推荐
- .eslintrc.js相关配置
module.exports = { root: true, //此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为modul ...
- vscode 常用命令行
Ctrl+Shift+P: 打开命令面板 打开一个新窗口: Ctrl+Shift+N 关闭窗口: Ctrl+Shift+W 新建文件 Ctrl+N 代码行缩进 Ctrl+[ . Ctrl+] 上下 ...
- cnblogs博客主题原来可以弄得这么美观
参考了网友 https://www.cnblogs.com/maybreath/p/5253824.html的做法,没想到真的可以耶. 总想弄个方便的.简洁的.可以被搜索引擎搜到的博客.以前用过wor ...
- Struts2后台使用Request和Session方法
在Struts2后台,如果需要使用Request和Session的话,可以通过下面的方法: 主要是利用了com.opensymphony.xwork2.ActionContext类以及ora.apac ...
- js常用算术运算符与一元运算符在做运算时不同类型的转换规则
/** * 算术运算符:+, -, *, /, % * 当对非number类型的值进行运算(-, *, /, %)时,会将这些值先转换成number再运算,加法'+'运算除外, * 当对非number ...
- 【记录】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 出现这问题控制台会有一 ...
- go语言从例子开始之Example15.闭包
Go 支持通过 闭包来使用 匿名函数.匿名函数在你想定义一个不需要命名的内联函数时是很实用的. 闭包简单理解,函数反回值是一个函数 Example: package main import " ...
- Spring MVC 配置Controller详解
在SpringMVC中,对于Controller的配置方式有很多种,如下做简单总结 第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置: <!-- 表示将请求的URL ...
- 转载:java集合类数据结构分析
数组是 最常用的数据结构.数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的.数组常用的场景有把:从数据库里读取雇员的信息存储为 EmployeeDetail[],把一个字符串转换并 ...
- 一个故事讲懂vue父子组件传值
作者:李佳明同学链接:https://www.jianshu.com/p/2272b6ca0f0c 一个故事讲懂vue父子组件传值 讲故事前先讲代码 父组件向子组件传值 父组件数据传递给子组件可以通过 ...