Python 反射
Admin
2019-04-28 16:43:21
Python
什么是反射?
通过类名获得类的实例对象
通过方法名得到方法,实现调用
通过字符串映射object对象的方法或者属性
反射方法
vim a.py class A: def __init__(self): self.name = "zk" def getName(self): return self.name 反射方法一: from a import A obj = globals()["A"]() print obj.getName() 反射方法二: module = __import__("a") obj = getattr(module, "A")() print obj.getName()
hasattr(obj,name_str): 判断object是否有name_str这个方法或者属性
getattr(obj,name_str): 获取object对象中与name_str同名的方法或者函数
setattr(obj,name_str,value): 为object对象设置一个以name_str为名的value方法或者属性
delattr(obj,name_str): 删除object对象中的name_str方法或者属性
def set(self): print "is name: %s" %self.name class A: def __init__(self,name): self.name = name def getName(self): return self.name tt = A("tt") setattr(tt , "name", set) # 设置 func = getattr(tt,"name") # 获取 func(tt) hasattr(tt,"name") # 是否存在 delattr(tt,"name") # 删除
应用场景
在做接口自动化的时候,需要通过不同的请求方式,调用不同的函数
class count(object): def add(self,num): return num + 2 def sub(self,num): return num - 2 # 使用反射 method = input("方法>>>:") c = count() if hasattr(c,method): func = getattr(c,method) print func(2) else: print("方法错误")