作者mantour (朱子)
看板Python
標題Re: [問題] 修改其他檔案的全域變數
時間Mon Jun 25 09:36:54 2012
不知道你所說的改變 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)
推 frankofranko:恩恩就是你說的這樣~ 06/25 11:34
→ frankofranko:可能是我拿來用的程式有點大 06/25 11:35
→ frankofranko:所以架構不只是我想得這樣 我這邊弄出來就都是False 06/25 11:36
→ frankofranko:不過我應該有辦法避免用這種方法寫了 06/25 11:36
→ frankofranko:謝謝!! 還幫我跑程式QQ 06/25 11:37
→ mantour:不客氣 希望你的問題有解決 06/25 16:02