為什麼這篇python class全域變數鄉民發文收入到精華區:因為在python class全域變數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者mantour (朱子)看板Python標題Re: [問題] 修改其他檔案的全域變數時間Mon ...
不知道你所說的改變 A.py中 AAAA的內容的意思是什麼
載入 A.py (import A) 之後可以改變namespace裡的A.AAAA的值
但是並不會改變A.py這個檔案的內容
不過依你的順序我執行起來是沒問題的
---A.py---
AAAA=False
def setA():
global AAAA
AAAA=True
def getA():
return AAAA
class Test1():
def AisTrue(self):
return getA()
---end---
---B.py---
class Test2():
def changeA(self):
import A
A.setA()
---end---
---main.py---
import A # 讀入 A.py
import B # 讀入 B.py
test1=A.Test1() # 產生一個Test1物件
test2=B.Test2() # 產生一個Test2物件
print "\n getA:", test1.AisTrue() # 執行test1的AisTrue() method:
# 這邊會回傳False
test2.changeA() # 執行test2的changeA() method:
# A.AAAA 此時重設為 True
print "\n getA:", test1.AisTrue() # 執行test1的AisTrue() method:
# 此時回傳True
---end---
執行結果:
# python main.py
getA: False
getA: True
※ 引述《frankofranko (池上米)》之銘言:
: 我是python的新手
: 很多觀念還不太懂..
: google不到又有點緊急只好來po文
: 希望能有人幫我解答QQ
: 問題如下
: 兩個檔案有問題的部分大致如下
: A.py
: global AAAAA
: AAAAA = False
: def setA():
: global AAAAA
: AAAAA = True
: def getA():
: global AAAAA
: print"get A: ",AAAAA
: class test():
: def A_True():
: getA()
: B.py
: class test2():
: def changeA():
: import A
: A.setA()
: 程式執行的順序為
: 1.先執行到A.py 有了一個test的物件 並且執行一次A_True() 印出False
: 2.執行到B.py 有了一個test2的物件 並且執行一次changeA()
: (期待在這邊把A.py裡的AAAAA變成True)
: 3.又回來使用先前那個test的物件 這時候執行A_True 仍然印出False
: 這是為什麼呢??
: 應該要怎麼改才會對呢?
: 不好意思了這種問題好像很基本...
: 謝謝大家!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.57.113.89
※ 編輯: mantour 來自: 61.57.113.89 (06/25 09:46)