python基础-第七篇-7.3反射

Posted 财经知识狂魔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础-第七篇-7.3反射相关的知识,希望对你有一定的参考价值。

定义

  反射是根据字符串的形式去对操作其成员

  了解反射前,我先看看内置方法__import__,还记得这个内置方法吗?

  • __import__  用于以字符串的形式导入模块
inp = input(请输入你要导入的模块:)
mokuai = __import__(inp)  #import xml as mokuai
print(mokuai.__doc__)
  • getattr  用于以字符串的形式去某个模块寻找函数
import re
str_func = input(请输入你要执行re下的方法:)
tar_func = getattr(re,str_func)
print(tar_func) #打印找到函数的内存地址

 

反射成员

  • getattr   用于以字符串的形式去某个模块寻找函数

import re
str_func = input(请输入你要执行re下的方法:)
tar_func = getattr(re,str_func,None)  #找到了就返回函数,没有找到就返回None,不设置None,没找到就报错
print(tar_func) #打印找到函数的内存地址
  • hasattr  根据字符串的形式去某个模块中查看是否存在某东西

import re
ret1 = hasattr(re,match)
print(ret1)
ret2 = hasattr(re,fjfijajfojg)
print(ret2)
  • setattr 设置

r = hasattr(commons,age)
print(r)  #False
setattr(commons,age,lambda a:a + 1)
r = getattr(commons,age)  #没报错
ret = r(1)
print(ret)
  • delattr 删除

 

实例:web框架的路由系统

from lib import account
url = input(请输入url:)
inp = url.split(/)[-1]
if hasattr(account,inp):
    func = getattr(account,inp)
    func()
else:
    print(404)

 

url = input(请输入url:)
target_module,target_func = url.split(/)
m = __import__(lib.+target_module,fromlist=True)
if hasattr(m,target_func):
    tar_func = getattr(m,target_func)
    r = tar_func()
    print(r)
else:
    print(404)

 

                                                欢迎大家对我的博客内容提出质疑和提问!谢谢

 

 

                                                                             笔者:拍省先生 

以上是关于python基础-第七篇-7.3反射的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第七篇: 面向对象和模块补充

第七篇:面向对象高级

python基础-第七篇-7.1初识类和对象

Python之路第七篇--Python基础之面向对象及相关

python 基础第七篇

python学习之路基础篇(第七篇)