【问题标题】:Can I make this work without global variables?我可以在没有全局变量的情况下完成这项工作吗?
【发布时间】:2016-11-10 12:38:39
【问题描述】:

库.py

str = '' 
def setStr(input):
   global str
   str = input
def getStr():
   return str

现在我可以导入模块并更新它们...

module1.py

import library
import module2

library.setStr('wow')
module2.run()

module2.py

import library

def run():
        print(library.getStr())

输出

wow

有没有办法在没有全局调用的情况下创建我展示的功能?

谢谢!

【问题讨论】:

  • 除了看起来邋遢之外,你的库会做什么 Python 日志库不做的事情?可能已经在 python 日志库上投入了数千个工时。为什么您认为您或任何人可以“以更好的方式复制它”?由于您唯一的想法是使用大量全局变量(而不是类和对象),因此前景似乎相当黯淡。
  • 我的意思是我需要以更好的方式制作我的解决方案。不幸的是,我无法使用日志库来满足我的需求。我意识到我在标题中的模棱两可。现在改变。

标签: python logging import static global


【解决方案1】:

那么我如何复制日志记录的工作方式但没有全局变量用于我的目的?

你不能,因为logging uses global (module-level) variables to store its configuration。例如,root logger 保存在全局变量中。

(我的意思是,你可以让这些变量存在于类级别而不是模块级别,就像 Logger.manager 所做的那样,但无论哪种方式,代码味道都是一样的。)

【讨论】:

  • 怎么样?我已经浏览了方法代码。它从不使用全局变量。
  • root 是一个全局变量。 Logger.manager是类变量,基本上是变相的全局变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多