[英]Pythonic Way to structure module API with circular import
我應該如何解決以下循環依賴關系?
我有一個文件A,它公開API方法並將所有后端邏輯委托給一個單獨的文件A_impl。
在A.py中,我還公開了一個枚舉,客戶端需要將該枚舉作為參數傳遞給某些API方法:
# A.py
import A_impl
class MyEnum(Enum):
ONE = 1
TWO = 2
THREE = 3
def A(x: MyEnum):
return A_impl._A(x)
A_impl實際上需要MyEnum:
#A_impl.py
from A import MyEnum
def _A(x: MyEnum):
pass
解決此問題的一種方法是僅將兩個模塊合並在一起,但這首先破壞了將其拆分為更干凈的代碼的目的。 A_impl由數十個輔助函數組成,將公共方法和私有方法放在一個模塊中變得一團糟。
您可以在A
的定義內導入A_impl
:
# A.py
class MyEnum(Enum):
ONE = 1
TWO = 2
THREE = 3
def A(x: MyEnum):
import A_impl
return A_impl._A(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.