2013-07-03 23 views
2

我目前在修改Python中另一個文件中的靜態變量時遇到問題。Python中另一個文件中的靜態變量

FILEA

class MainClass(object): 
    global_var = 0 
    def __init__(self): 
     MainClass.global_var = 1 

class SecondClass(object): 
    def __init__(self): 
     MainClass.global_var = 2 

if __name__ == '__main__': 
    main = MainClass() 
    print "After MainClass:" + str(MainClass.global_var) 

    second = SecondClass() 
    print "After SecondClass:" + str(MainClass.global_var) 

    from FileB import ThirdClass 
    third = ThirdClass() 
    print "After ThirdClass:" + str(MainClass.global_var) 

FILEB

class ThirdClass(object): 
    def __init__(self): 
     from FileA import MainClass 
     MainClass.global_var = 3 

輸出

After MainClass:1 
After SecondClass:2 
After ThirdClass:2 

我想修改ST MainClass中的atic變量爲FileB中的3個變量。我究竟做錯了什麼?謝謝!

+0

我不確定這是否可能。導入一個導入其他文件的文件是很奇怪的。 –

回答

2

你有兩個獨立的MainClass類實例!這是由於Python導入工作的方式。

您可以打印從FileAid(MainClass)驗證這一點,你也已經在FileB

進口它在__init__後這不是在Python中的錯誤,你只是試圖做一些事情,Python的語言沒有指定應該工作。

試驗這樣的代碼對學習很有幫助,但我希望你不要試圖做這樣的事情是一個真正的程序。這樣的代碼肯定比麪條這樣的代碼更好。

†向任何被此評論冒犯的意大利麪條道歉。

+0

這意味着你不能這樣做?它永遠不會改變變量的值? –

+1

這是答案,謝謝! – WLin

+0

@DaviSampaio,它改變了值,但有兩個名爲MainClass的類。更改一個不會影響其他 –