博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射的基本介绍
阅读量:5049 次
发布时间:2019-06-12

本文共 910 字,大约阅读时间需要 3 分钟。

反射:通过字符串的形式导入模块,通过字符串的形式去模块中寻找指定函数、字段、全局变量等

 

根据用户输入的内容导入模块

 由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

class Foo(object):

 
    
def 
__init__(
self
):
        
self
.name 
= 
'wupeiqi'
 
    
def 
func(
self
):
        
return 
'func'
 
obj 
= 
Foo()
 
# #### 检查是否含有成员 ####
hasattr
(obj, 
'name'
)
hasattr
(obj, 
'func'
)
 
# #### 获取成员 ####
getattr
(obj, 
'name'
)
getattr
(obj, 
'func'
)
 
# #### 设置成员 ####
setattr
(obj, 
'age'
18
)
setattr
(obj, 
'show'
lambda 
num: num 
+ 
1
)
 
# #### 删除成员 ####
delattr
(obj, 
'name'
)
delattr
(obj, 
'func'
)
 
===============================
from lib import account
#模块名/函数名
#account/login
url = input('请输入URl:')
target_module, target_func = url.split('/')
m = __import__("lib" +targrt_module, fromlist=True)
 
if hasattr(account,inp):
  target_func = getattr(account,inp)
  r = target_func()
  print(r)
else:
  print('404')
 
 

转载于:https://www.cnblogs.com/huangguabushihaogua/p/9407816.html

你可能感兴趣的文章
javascript学习---BOM
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
tensorflow实现迁移学习
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
关于Redis处理高并发
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
asp.net core 系列 16 Web主机 IWebHostBuilder
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>