[英]Avoiding circular dependency when overloading operator __add__ in Python
[英]avoiding a circular dependency in packaging
我正在清理我繼承的一些Python(2.7)代碼,並且遇到了我想要擺脫的循環導入場景。 代碼當前運行(通過濫用導入功能),但是當其他代碼不以特定方式訪問它時,它會導致問題。
文件結構基本上是這樣的:
/deep/nested/path/__init__.py
/deep/nested/path/objects.py
/deep/nested/path/api.py
objects
是數據模型的集合
api
使用函數公開開發人員接口以獲取/創建objects
實例。
發生循環導入是因為某些objects
需要調用api
函數來創建子對象。
這段代碼處理分析並執行很多(很多對象,深度遞歸)。 包名稱空間也是相當嵌套的 - 因此使用包路徑會對性能產生切實影響。
我很想將objects
所需的工廠函數移動到該文件中,然后將它們導回到api
以供一般使用。 這將解決我的問題(並消除一個點),但失去一些代碼組織(實際上相當不錯)。 我希望另一組眼睛給出一些意見。
雖然這里已經有幾個關於循環進口的問題,但我並不關心讓它發揮作用(它確實如此)。 我擔心最小化點符號。 api.factory
和objects.foo
工作,但package.api.factory
不會。
也許最好將這些工廠功能轉移到第三個模塊中。 然后objects
可以導入它以創建其對象; 如果需要, api
可以導入它; 如果其他模塊需要它包含的內容,則可以導入它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.