python 之反射

通过字符串的形式导入模块

通过字符串的形式,去模块中寻找制定的函数,并执行getattr(模块名,函数名,默认值)

通过字符串的形式,去模块中设置东西setattr(模块名,函数名/变量名,lambda表达式/变量值)

通过字符串的形式,去模块中删除东西delattr(模块名,函数名)

根据字符串的形式去对象(某个模块)中操作其成员

1 inp = input('请输入模块名:')
2 inp_func = input('请输入要执行的函数:')
3 dd = __import__(inp) # 以字符串的形式导入模块
 # from xxx.xx import oo 等价于
__import__('xxx.xx.oo',fromlist = True)
4 target_func = getattr(dd,inp_func,,None) # 以字符串的形式在模块中寻找函数 如果没有找到返回None
5 r = target_func()
6 print(r)
# 内存中操作
hasattr(模块名,函数名)# 判断函数是否存在
setattr(模块名,函数名/变量名,lambda表达式/变量值)
delattr(模块名,函数名)

结果:

请输入模块名:commons
请输入要执行的函数:f1
F1

posted @ 2017-02-22 22:56  Erick-LONG  阅读(175)  评论(0编辑  收藏  举报