[英]How to share static class variables between files?
我試圖在兩個模塊之間通過靜態類共享數據。 本來應該很簡單,但是事實證明我遇到了一些陷阱。 這是代碼。
testa.py
class Tc:
a = 0
if __name__ == "__main__":
import testb
print(Tc.a)
testb.py
import testa
print(testa.Tc.a)
testa.Tc.a = 1
print(testa.Tc.a)
運行命令
python testa.py
預期的輸出是
0
1
1
但我越來越
0
1
0
這是怎么回事?
testa
並定義Tc
類並導入testb
testb
進口testa
。 testa
因此將執行它並創建一個新的Tc
類 testb
繼續打印0
並為導入的testa
遞增testa.Tc
testa
繼續打印其Tc.a
計數器的值為零。 運行文件時,其模塊名稱為__main__
(甚至在testa
內部有條件地檢查它!),而在導入期間,名稱始終為模塊的名稱。 因此重復。 如果要避免這種情況,您應該真正使用3個單獨的文件,一個文件運行並導入testa
,另一個文件testb
導入testa
。
當您的代碼import testb
,它在內存中有一個class Tc
,但是尚未完成模塊的創建。 然后, testb
再次導入testa
,由於尚未完成創建,因此尚未進行緩存,因此再次導入它,並正在創建另一個Tc
。
TL; DR:不要進行循環進口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.