gpt4 book ai didi

python - 如何正确处理 Python 中的循环模块依赖?

转载 作者:太空狗 更新时间:2023-10-29 20:51:59 26 4
gpt4 key购买 nike

试图找到一个好的和合适的模式来处理 Python 中的循环模块依赖。通常,解决方案是将其删除(通过重构);然而,在这种特殊情况下,我们真的很想拥有需要循环导入的功能。

编辑:根据以下答案,此类问题的通常攻击角度是重构。但是,为了这个问题,假设这不是一个选项(无论出于何种原因)。

问题:

logging 模块需要 configuration 模块来获取它的一些配置数据。但是,对于某些 configuration 函数,我真的很想使用 logging 模块中定义的自定义日志记录函数。显然,在 configuration 中导入 logging 模块会引发错误。

我们能想到的可能的解决方案:

  1. 不要这样做。正如我之前所说,这不是一个好的选择,除非所有其他可能性都很丑陋和糟糕。

  2. Monkey-patch 模块。这听起来还不错:将 logging 模块动态加载到 configuration 之后 初始导入,并且在实际使用其任何功能之前.不过,这意味着要定义全局的、每个模块的变量。

  3. 依赖注入(inject)。我已经阅读并遇到了依赖注入(inject)替代方案(特别是在 Java 企业领域),它们消除了一些令人头疼的问题;但是,它们可能过于复杂而难以使用和管理,这是我们希望避免的事情。不过,我不知道全景图在 Python 中的表现如何。

启用此功能的好方法是什么?

非常感谢!

最佳答案

如前所述,可能需要进行一些重构。根据名称,如果日志记录模块使用配置可能没问题,当考虑配置中应该包含哪些内容时,会想到配置参数,然后出现一个问题,为什么该配置要记录日志?

有可能配置下使用日志记录的代码部分不属于配置模块:看起来它正在进行某种处理并记录结果或错误。

在没有内在知识的情况下,仅使用常识,“配置”模块应该是简单的东西,不需要太多处理,它应该是导入树中的一个叶子。

希望对您有所帮助!

关于python - 如何正确处理 Python 中的循环模块依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20382403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com