反射:通过字符串去操作对象的属性和方法,是字符串形式.
可进行反射操作的对象:实例化对象、类、其他模块、本模块
getattr() 根据字符串的形式去对象中寻找东西
hasattr() 根据字符串的形式去某个对象中判断东西是否存在
setattr() 根据字符串的形式去某个对象中设置东西
delattr() 根据字符串的形式去某个对象中删除东西
假设一个文件为login.py,代码如下
def index():
print('欢迎访问XX网站首页')
def login():
print('登陆成功')
def logout():
print('退出系统')
str1='我是str1'
class Person(object):
def __init__(self):
pass
def info(self):
print('我是Person类的info方法')
对其他模块、实例化对象进行反射操作
import login
#通过login模块找到logout函数,并且调用它
f=getattr(login,'logout') #即对其它模块进行反射操作
f()
#如何找到Person类中的方法并且调用它
obj=login.Person()
if hasattr(obj,'info'):#即对实例化对象进行反射操作
f=getattr(obj,'info')
f()
else:
print('sorry')
#根据字符串形式往对象中添加exit属性
f=setattr(obj,'exit','this is exit metho