python中的反射机制
一、方法简介
1.import() 动态加载模块 2.hasattr()判断实例中是否存在字符串对应的属性 3.getattr() 获取字符串对应的属性 4.setattr() 将字符串对应的已存在的属性添加到实例中 5.delattr()删除实例中字符串对应的属性
二、动态导入模块包
事前准备:在同级别目录下新建一个名为func_001的py文件,且内容为
class Func001():
def process(self):
print("这是原函数")
#再新建一个文件
def new_method():
print("我是新函数")
def main():
func001_module = __import__("func_001",fromlist=True)
print(func001_module)
if hasattr(func001_module,"Func001"):
func001 = getattr(func001_module,"Func001")
if hasattr(func001,"process"):
func_001_process = getattr(func001,"process")
func_001_process(func001)
else:
print("没有找到该方法")
setattr(func001,"new_method",new_method)
if hasattr(func001,"process"):
func001_new_method=getattr(func001,"new_method")
func001_new_method()
else:
print("没有找到那个方法")
else:
print("没有找到该类")
if __name__ == "__main__"
main()
三、动态调用函数
class User()
def add(self):
print("新增一个用户")
def delete(self):
print("删除一个用户")
def update(self):
print("更新一个用户")
def select(self):
print("选择一个用户")
def process(self,method)
if hasattr(slef,method):
func = getattr(self,method)
func()
else:
print("无效调用")
if __name__ == "__main__"
a = User()
a.process("add")
|