python中的反射及在动态导入中的使用详解

这篇博客记录下python中关于反射的知识点,同时结合实例看看其在动态导入中的应用。

什么是反射

反射(Reflect)是指面向对象编程中通过字符串动态获取对象的类型、属性和方法等信息。

反射使用场景

想象下面的场景,我们编写了几十个插件供业务程序来使用,而具体业务中使用哪些插件是由配置文件来控制的,或者由用户输入的。不管是配置文件还是用户输入,都是采用字符串形式来表示插件名,我们需要检查字符串代表的插件名是否存在,如果存在需要获取对应的插件对象并调用。

文字表述不太直观,看如下的一个项目

在这里插入图片描述

plugins模块中有两个插件,分别是plugin1plugin2

# plugin1
class Calc1:
    def process(self):
        print('class name is {}'.format(self.__class__.__name__))
# plugin2
class Calc2:
    def process(self):
        print('class name is {}'.format(self.__class__.__name__))

并在__init__.py中进行了导入

from plugins import plugin1, plugin2
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值