我目前在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
我想在FileB中将MainClass中的静态变量修改为3。我究竟做错了什么?谢谢!
答案 0 :(得分:2)
你有两个独立的MainClass类实例!这是由于Python导入工作的方式。
您可以通过id(MainClass)
打印FileA
以及将__init__
导入FileB
后的{{1}}来验证这一点
这不是Python中的错误,您只是尝试执行Python语言未指定的操作。
尝试使用这样的代码对学习有好处,但我希望你不要尝试做这样的事情是真正的程序。肯定有一种比意大利面条†代码更好的方式。
†对此评论所冒犯的任何意大利面条道歉。