本篇内容:
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。
- import commas同等于下面字符串导入模块
-
- inp = input("请输入模块名:")
- dd = __import__(inp)
-
- ret =dd.f1()
- print(ret)
-
- 通过字符串的形式导入模块
通过字符串的形式导入模块
- #应用根据用户输入导入模块
- inp = input("请输入模块:")
- inp_func = input("请输入执行的函数:")
-
- # __import__以字符串的形式导入模块
- moudle = __import__(inp)
- #getattr 用以去某个模块中寻找某个函数
- target_func = getattr(moudle,inp_func)
-
- relust = target_func()
- print(relust)
-
- 指定函数中执行指定函数
指定函数中执行指定函数
1、getattr
通过字符串的形式去某个模块中寻找东西
- import commas
-
- #去commas,寻找name变量,找不到返回none
- target_func = getattr(commas ,"name",None)
- print(target_func)
- demo
demo
2、hasattr
通过字符串的形式去某个模块中判断东西是否存在
- import commas
-
- #去commas模块中寻找f1,有返回true,没有返回none
- target_func = hasattr(commas,"f1")
- print(target_func)
- demo
demo
3、setattr
通过字符串的形式去某个模块中设置东西
- import commas
-
- #去commas模块中寻找name,有返回true,没有返回none
- target_func1 = hasattr(commas,"name")
- print(target_func1)
-
- #在内存里往commas模块中添加name = "zhangyanlin"
- setattr(commas,"name","zhangyanlin")
- #在内存里往commas模块中创建函数
- setattr(commas,"f3",lambda x: "zhen" if x >10 else "jia")
-
- #去commas模块中寻找name,有返回true,没有返回none
- target_func = hasattr(commas,"name")
- print(target_func)
-
- demo
- import commas
-
- #去commas模块中寻找name,有返回true,没有返回none
- target_func1 = hasattr(commas,"name")
- print(target_func1)
-
- #在内存里往commas模块中添加name = "zhangyanlin"
- setattr(commas,"name","zhangyanlin")
- #在内存里往commas模块中创建函数
- setattr(commas,"f3",lambda x: "zhen" if x >10 else "jia")
-
- #去commas模块中寻找name,有返回true,没有返回none
- target_func = hasattr(commas,"name")
- print(target_func)
4、delattr
- import commas
-
- target_func = hasattr(commas,"f1")
- print(target_func)
-
- del_func = delattr(commas,"f1")
-
- target_func = hasattr(commas,"f1")
- print(target_func)
-
- demo
demo
案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|