作者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)
1F:推 frankofranko:恩恩就是你说的这样~ 06/25 11:34
2F:→ frankofranko:可能是我拿来用的程式有点大 06/25 11:35
3F:→ frankofranko:所以架构不只是我想得这样 我这边弄出来就都是False 06/25 11:36
4F:→ frankofranko:不过我应该有办法避免用这种方法写了 06/25 11:36
5F:→ frankofranko:谢谢!! 还帮我跑程式QQ 06/25 11:37
6F:→ mantour:不客气 希望你的问题有解决 06/25 16:02