我想将一个模块用作其他模块中引用的单例。它看起来像这样(这实际上不是我正在处理的代码,但我简化了它以丢弃所有不相关的东西):
主要.py
import singleton
import printer
def main():
singleton.Init(1,2)
printer.Print()
if __name__ == '__main__':
pass
单例.py
variable1 = ''
variable2 = ''
def Init(var1, var2)
variable1 = var1
variable2 = var2
打印机.py
import singleton
def Print()
print singleton.variable1
print singleton.variable2
我希望得到 1/2 的输出,但得到的却是空白。我知道在将单例导入 print.py 模块后,变量再次初始化。
所以我认为我必须检查它们之前是否在 singleton.py 中初始化过:
if not (variable1):
variable1 = ''
if not (variable2)
variable2 = ''
但我不知道该怎么做。或者有一种我不知道的在 python 中使用单例模块的更好方法:)
最佳答案
Init
中的赋值强制将变量视为局部变量。使用 global
关键字来解决这个问题:
variable1 = ''
variable2 = ''
def Init(var1, var2)
global variable1, variable2
variable1 = var1
variable2 = var2
关于python - 如何确定变量是否在 Python 中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607037/