我为何开始在 Python 中使用依赖注入?

主要观点:作者最初构建 Python 项目时只关注功能实现,后来发现代码存在问题,如耦合度高、测试困难等,在资深开发者介绍下了解到依赖注入(Dependency Injection,DI),并介绍了 DI 的概念、工作方式、在 Python 中的应用及使用 dependency-injector 库的示例,强调 DI 可改善代码结构、便于测试等,最后呼吁读者尝试使用 DI 来写出更优质的 Python 代码。

关键信息:

  • DI 是“给我所需,不要让我自己创建”,可实现依赖外部注入,便于替换和促进松耦合。
  • 无 DI 时代码耦合度高,如 DataProcessor 类直接创建数据库连接,切换数据库或测试困难。
  • 有 DI 时,将依赖作为参数传递给类,如 DataProcessor 类接收外部传入的数据库。
  • dependency-injector 库提供容器(Container)和提供者(Provider)来管理依赖,有 Factory、Singleton 等类型。
  • 示例中通过 Container 配置和管理各种依赖,如数据库和服务,在 ETL 管道中使用 DI 实现各组件的协作。

重要细节:

  • 安装 dependency-injector 库的命令为pip install dependency-injector
  • 容器像依赖的注册表,知道如何创建组件和组件所需的依赖。
  • 提供者用于告诉容器如何创建对象,如 Factory 每次创建新实例,Singleton 只创建一个实例。
  • 在使用容器时,先加载配置文件,然后创建带有自动解析依赖的对象,如pipeline = container.etl_pipeline()
  • 在 ETLPipeline 类中,通过构造函数接收依赖,并在 run 方法中使用这些依赖进行数据处理。
阅读 17
0 条评论