首先出現這種問題是因為沒有規劃好層級,哪些模組和哪些模組邏輯上應該在一起,哪些模組是公共的依賴項,哪些是實際的業務程式碼,按你的需求,顯然B.Model應該是一個獨立的模組才對,把第一和第三層合成一個模組然後把第二層獨立出去就會出現你這種情況。迴圈引用是小問題,程式碼以後難維護、理不清實現的邏輯才是大問題。其次,Python根本就是可以迴圈引用的,只要你迴圈引用中的模組並不是在定義階段就馬上使用,比如:
將import放到函數里面,放到最下面,都可以解決問題,但治標不治本,治本的還是要重新劃分模組,邏輯理順了就不會出現迴圈import
首先出現這種問題是因為沒有規劃好層級,哪些模組和哪些模組邏輯上應該在一起,哪些模組是公共的依賴項,哪些是實際的業務程式碼,按你的需求,顯然B.Model應該是一個獨立的模組才對,把第一和第三層合成一個模組然後把第二層獨立出去就會出現你這種情況。迴圈引用是小問題,程式碼以後難維護、理不清實現的邏輯才是大問題。其次,Python根本就是可以迴圈引用的,只要你迴圈引用中的模組並不是在定義階段就馬上使用,比如:
兩個import其中的一個在匯入時會為空,取決於import順序,但由於只有在函式內部使用,只要import階段沒有執行到相應的位置就不會有問題。也就是說出現這種情況時只要避免三種使用方法:from ... import ... (這個去掉肯定沒啥問題)直接執行的程式碼(本來大部分情況下你都應該避免的)類的繼承(基類的模組去import派生類的模組本來就很奇怪啊)將import放到函數里面,放到最下面,都可以解決問題,但治標不治本,治本的還是要重新劃分模組,邏輯理順了就不會出現迴圈import