跨python模块共享全局变量

时间:2016-10-21 09:13:56

标签: python

我正在尝试在两个文件之间创建全局变量 这是相关代码的片段:

Logger.py

import globals
class Logger():
...
  def log(self): 
    globals.sql.execute('..')

globals.py

import Logger
import SQL

logger=Logger.Logger()
sql=SQL.SQL()

跑步时我收到错误

  

AttributeError:'module'对象没有属性'sql'

on globals.sql.execute('..')

1 个答案:

答案 0 :(得分:3)

您进行了循环导入Logger导入globals,导入Logger。接下来,Logger.Logger()行在sql=SQL.SQL()行之前运行,因此后者尚不存在

您的代码不完整,但如果您尝试使用Logger.__init__()方法记录任何内容,则表示globals模块尚未完成,您将收到属性错误。

您可以通过在创建sql = SQL.SQL()实例之前移动Logger()行来运行来解决此问题。但是,请考虑完全避免循环导入。

您可以将sql对象传入记录器,以避免需要创建循环导入,例如。