所以,我在python中實現了一個數據樹,它代表了非常像這樣的數學表達式binary expression tree。每個節點代表一個操作(+,*,exp(),...),每個葉代表一個數字或變量。因此我創建了一個模塊Expression.py,它包含父類節點和用於數學運算的子類。有許多不同節點的樹的Python項目結構
現在,隨着項目變得越來越複雜,我開始實施更多的節點類型涵蓋更多的業務和各子類節點已開始有相當的任務期限簡單化等很多方法
到目前爲止,我在Expression.py文件中實現了所有這些子節點。但現在是一個500多行文件,我還沒有完成。我試圖將每個子類放入一個單獨的文件(Java風格)並將它們合併到一個包中,這將與我對正確結構的理解相匹配。但是這個實現給我帶來了問題,因爲像Addition.py和不同模塊乘法.py仍然互相引用。例如。一個加法 - 對象的方法可能會返回一個乘法 - 對象,反之亦然。
我的問題是:你如何構建這樣一個項目?如何構建許多相關的子類,除了將它們放在一個巨大的文件中之外,還可以相互引用?
如果我將它們安排在一個包中,我將如何正確導入它們?我將如何正確引用它們?
編輯: 好吧,讓我更加具體,這是一些示例代碼:
class Node():
def __init__(self):
pass
def derive(self):
pass
class Sine(Node):
def __init__(self, arg):
self.arg = arg
def derive(self):
return Cosine(self.arg)
class Cosine(Node):
def __init__(self, arg):
self.arg = arg
def derive(self):
return Multiplication(Num(-1), Sine(self.arg))
class Multiplication:
...
正如你看到的類正弦和餘弦有一個循環依賴,我不能(明知)分成兩個獨立的文件。雖然我不想將數千行子類放入一個文件中。這只是示例代碼。這些類實際上包含更多線條。