Python中另一个文件中的静态变量

时间:2013-07-03 01:21:12

标签: 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

我想在FileB中将MainClass中的静态变量修改为3。我究竟做错了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

你有两个独立的MainClass类实例!这是由于Python导入工作的方式。

您可以通过id(MainClass)打印FileA以及将__init__导入FileB后的{{1}}来验证这一点

这不是Python中的错误,您只是尝试执行Python语言未指定的操作。

尝试使用这样的代码对学习有好处,但我希望你不要尝试做这样的事情是真正的程序。肯定有一种比意大利面条代码更好的方式。

†对此评论所冒犯的任何意大利面条道歉。