Jua*_*oto 8 python module cyclic-reference importerror cyclic-dependency
试图找到一个好的和正确的模式来处理Python中的循环模块依赖.通常,解决方案是将其删除(通过重构); 但是,在这种特殊情况下,我们真的希望拥有需要循环导入的功能.
编辑:根据下面的答案,这种问题的通常攻角是重构.但是,为了这个问题,假设这不是一个选项(无论出于何种原因).
问题:
该logging模块要求configuration模块提供一些配置数据.但是,对于某些configuration功能,我真的想使用logging模块中定义的自定义日志记录功能.显然,导入logging模块configuration会引发错误.
我们可以想到的可能的解决方案:
不要这样做.正如我之前所说,这不是一个好的选择,除非所有其他可能性都是丑陋和糟糕的.
猴子补丁模块.这听起来不是太糟糕了:在加载logging模块动态进入configuration 后的初始导入,和之前的任何职能被实际使用.这意味着定义全局的每模块变量.
依赖注入.我已阅读并尝试依赖注入替代方案(特别是在Java Enterprise空间中),它们消除了一些令人头痛的问题; 然而,它们可能太复杂而无法使用和管理,这是我们想要避免的.但是,我不知道Python中的全景图是怎样的.
什么是启用此功能的好方法?
非常感谢!
正如已经说过的,可能需要一些重构。根据名称,如果日志记录模块使用配置可能没问题,当考虑配置中应该包含哪些内容时,我们会想到配置参数,然后出现一个问题,为什么要配置日志记录?
有可能配置下使用日志记录的代码部分不属于配置模块:看起来它正在执行某种处理并记录结果或错误。
如果没有内在知识,并且仅使用常识,“配置”模块应该是简单的东西,不需要太多处理,并且它应该是导入树中的叶子。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |