【问题标题】:Can I use python static variables to communicate between two modules?我可以使用 python 静态变量在两个模块之间进行通信吗?
【发布时间】:2011-11-04 03:05:54
【问题描述】:

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

    #!/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()   

我希望的是我执行 flasher.py,它会更新静态变量 flash_start_time,然后在执行 report.py 时可以访问更新后的值。 如果我将方法 Begin_Flashing() 设为静态,这会起作用吗?

【问题讨论】:

    标签: python static-members


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,Ignacio,我删除了“Monkey_”(我正在剪切我自己的代码并错过了它)。谢谢你抓住那个。关于两个“main”语句,文件在不同时间被调用。我猜我需要将数据写入一个文件,以便稍后运行的第二个文件可以访问它。
    • 是的。只要解释器​​处于活动状态,分配给变量就会持续。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多