【python】python的反射的自我总结

python的反射,其实就是想要导入哪个模块就输入这个模块名,还有就是调用你输入的模块的属性或方法

python的反射本质其实就是根据字符串的形式去操作模块中的方法及成员

 

# -*- coding:utf-8 -*-
imp=input("请输入模块名")
moudle=__import__(imp)
#上面的代码是通过用户输入的字符串,调用哪个模块,如果直接用import接字符串是没有办法导入的
#如果__import__()导入的是嵌套目录,则需要加个参数
#例如:__import__("lib.text.com",fromlist=True)#这样就会在lib下目录的text的目录下的找com模块,如果不传fromlist=True,它只会在lib中查找

moudleEle=input("输入模块的方法或属性")

func=getattr(moudle,moudleEle,"none")
#上面的方法是通过用户输入的方法或属性的名字传入给getattr()方法,从而去这个模块去寻找,如果找到就会放在func这个变量里

has=hasattr(moudle,moudleEle)
#上面的方法是检测这个模块有没有这个属性和方法的,有就返回会true,有没就返回false

setattr(moudle,"myfunc",lambda a: print(a+1))
#上面的这个方法是设置这个模块的方法或属性的,设置方法的时候需要用lambda表达式,调用设置的方法也必须要借用getattr()方法
func=getattr(moudle,"myfunc","none")
func(10)#结果为11

delattr(moudle,"属性或方法名")
#上面的方法是删除输入的指定的方法或者是属性

#print(func)#这是用户输入属性的时候,如果是属性就直接打印,

#func()#如果用户输入的是方法,如果需要调用这个方法就要加()才能调用

 

posted @ 2017-06-19 16:53  丰study  阅读(90)  评论(0)    收藏  举报