什么是反射机制
反射是将字符串映射到实例变量或实例方法的一种机制.
常见的应用场景:(1)动态加载模块(2)web框架的URL路由
学习中的可能遇到了这些需求
(1)你的伙伴封装好了很多py文件,然后你负责根据不同需求去调用不同模块。
(2)你写了一个类,其中封装了很多方法,这时你需要提供一个统一的入口供其他人调用(类似路由转发)。
这两个问题都可以通过反射很好的解决
python中的反射
(1)__import__() 动态加载模块
(2)hasattr() 判断实例是否存在字符串对应的属性
(3)getattr() 获取字符串对应的属性
(4)setattr() 将字符串对应的已存在的属性添加到实例中
(5)delattr() 删除实例中字符串对应的属性
解决模块动态引入问题
def new_method(self):
print("我是新来的请多关照!")
def main():
"""
动态导入模块,并创建类实例执行其中方法
"""
# 1 动态导入func_001模块
func001_module = __import__("src.func_001", fromlist=True)
print(func001_module)
# 1.1 判断是否存在对应类
if hasattr(func001_module, "Func001"):
# 2 创建Func001类实例对象
func001