簡體   English   中英

使用循環導入的Pythonic方法來構建模塊API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM