2
我有一個包含多個文件的包。每個文件都包含一個類,這些類是相互依賴的。如何在不將所有代碼放入一個文件的情況下避免循環依賴。有沒有更好的方式來重構代碼,或者是有解決的圓形進口python3中的循環導入
這是目錄結構
.
|-- Complainant.py
|-- Complaint.py
`-- __init__.py
Complaint.py方式:
from .Complainant import Complainant
class Complaint(BaseDocument):
ALL_STATUS = ["waiting","resolved", "rejected"]
text = TextField()
timestamp = DateTimeField()
status = TextField()
complainant_id = TextField()
department_ids = ListField(TextField())
def get_complainant(self):
db = DBManager.db()
complainant = Complainant.load(db, self.complainant_id)
return complainant
Complainant.py
from .Complaint import Complaint
class Complainant(BaseDocument):
account_type = TextField()
account_handle = TextField()
complaint_ids = ListField(TextField())
def get_complaints(self):
db = DBManager.db()
complaints = [Complaint.load(db, i) for i in self.complaint_ids]
return complaints
init.py
from .Complaint import Complaint
from .Complainant import Complainant
__all__ = [
Complaint,
Complainant
]
你可以把進口到相應的類方法。 – skovorodkin
你也可以使用'from來修復它。導入模塊「並使用限定名稱(例如'module.Class'),而不僅僅是類名。但是由於這些類緊密耦合在一起,可能它們應該在同一個模塊中定義? Python不是Java,你不需要把每個類放在它自己的文件中。 – Blckknght
@Blckknght但是將所有內容放在一個文件中是一個很好的設計決策,因爲在一個文件中會有很多代碼 – freeza