3

我目前无法在 Python 中修改另一个文件中的静态变量。

文件A

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)

文件B

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。我究竟做错了什么?谢谢!

4

1 回答 1

3

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

您可以通过打印来验证这一点id(MainClass)FileA也可以在您将其导入__init__FileB

这不是 Python 中的错误,您只是在尝试做一些 Python 语言未指定应该工作的事情。

用这样的代码做实验对学习很有好处,但我希望你不要试图做这样的事情,因为这是一个真正的程序。肯定有比这样的意大利面条†</sup>代码更好的方法。

† 对此评论冒犯的任何意大利面表示歉意。

于 2013-07-03T01:37:00.653 回答