python_反射
来源:互联网 发布:办公软件图标 编辑:程序博客网 时间:2024/06/16 07:26
一、反射:
作用与内存不影响原文件
通过字符串的形式,导入模块
通过字符串德的形式,去模块中寻找指定函数 (getattr)
通过 字符串的形式去判断某个模块的东西(hasattr)
通过字符串的形式去某个模块创建东西(setattr)
通过字符串去某个模块删除东西(delattr)
__import__(str,fromlist = True):fromlist 默认 为Flase ,当想到入多级时候True
import datetime#声明函数im = input("请输入导入的函数")#调用__import__ 函数数将字符转换成对应的py文件#等价于 import datatime as dddd = __import__(im)print(dd.datetime.now())
f=getattr(object, name, default=None)
''''
default:当没有 函数的时候返回 Noneobject:导入的模块name:函数,根据字符中的名字寻找模块中函数f:指向函数是地址,调用f()'''二、getattr
#应用:根据用户输入的内容,导入模块inp = input("请输入模块:")print(inp,type(inp))#dd = __import__(inp) # import 文件名 as ddinp_func = input("请输入要执行的函数")#getattr 用于以字符串的形式去某个模块中寻找函数target_func=getattr(dd,inp_func)#相当于import ti ti.f()#ti.f()target_func()>>>请输入模块:titi <class 'str'>请输入要执行的函数f1
三、hasatter
import tidouble_func = hasattr(ti,"f")print(double_func)>>> True 或者 Flase 看实际情况四、setattr/delattr
import ti#z相当于属性/穿入lambda 表达式相当于传进函数double_func = setattr(ti,"z",lambda a:a+b)del_func = delattr(ti,"f")
五、根据反射理解web
#模块名/函数名url = input("请输入url")target_module,target_func = url.split("/")#login.文件名/target_module模块名/fromlist同意引入模块名m = __import__("login."+target_module,fromlist=True)#指向文件的对应方法if hasattr(m,target_func): f= getattr(m,target_func) f()else: print("404")
阅读全文
0 0
- python_反射
- python_
- python_输入输出
- python_读书笔记
- python_汉诺塔
- python_格式化
- Python_函数
- python_模块
- Python_编码
- python_技巧
- python_实践
- python_多态
- Python_爬虫
- python_使用
- python_@符号
- python_多线程
- Python_变量
- Python_函数
- 《Drools7.0.0.Final规则引擎教程》第4章 4.3 日历
- Java Heap
- hihocoder1181(fleury)
- aop源码解析辅助-jdk动态代理
- 处理大并发之五 使用libevent利器bufferevent
- python_反射
- 网口扫盲三:以太网芯片MAC和PHY的关系
- centos7 网卡配置及bond配置
- IO流
- SpringAop注解实现
- Sublime Text插件之emmet与livereload
- Java泛型原理详解
- Poi2010 Monotonicity 2
- C++Buffer缓冲区-Gh0st远程控制源码摘取