我可以使用python静态变量在两个模块之间进行通信吗?

时间:2011-11-04 03:05:55

标签: python static-members

我有两个文件,一个用于执行自动测试,另一个用于存储测试结果并通过电子邮件发送测试结果。两个文件都是使用Hudson服务器启动的,我需要第一个模块与第二个模块共享信息,但是当我访问Reporter模块中的静态变量时,它们的初始值为“None”。我已将文件减少到最低限度,以便专注于使数据共享工作。文件一是:

    #!/usr/bin/python 

    from reports import Reporter 
    import time

    class Flash_Device(): 
        def Begin_Flashing( self ):
            Reporter.flash_start_time = time.time() 

    if ( __name__ == "__main__" ): 
        flasher = Flash_Device()
        flasher.Begin_Flashing() 

第二个文件是定义的报告文件,如下面的代码:

    #!/usr/bin/python 

    class Reporter():
        flash_start_time = None 

        def Report_Results( self ): 
            print "Flash start time:", Reporter.flash_start_time  

    if ( __name__ == "__main__" ):
        reporter = Reporter() 
        reporter.Report_Results()   

我所希望的是我执行的flashher.py更新静态变量flash_start_time,然后在执行reporter.py时可以访问更新的值。 如果我将方法Begin_Flashing()设为静态,那会有用吗?

1 个答案:

答案 0 :(得分:2)

没有。问题是只有一个模块可以"__main__",因此只会运行一个主要节。

您的代码没有任何问题,除非您在导入Monkey_Reporter时导入Reporter。不,通过reports访问它不会改变任何东西;他们仍然是同一个班级。