我有三个不同的模块,分别称为ModuleA
,ModuleB
和Common
。 Common
模块包含ModuleA
和ModuleB
都需要的一些辅助方法。
我想为每个模块维护单独的日志文件,这意味着应该有ModuleA.log
和ModuleB.log
。因此,在每个模块中,我都创建了一个带文件处理程序和相应文件名的logger对象。
现在的问题是,如果我从Common
调用ModuleA
中的方法,则Common
中的日志事件应添加到ModuleA.log
中,并且如果我调用方法从ModuleB
开始,Common
中的日志事件应附加到ModuleB.log
。为此,目前我正在从logger
模块的方法中传递一个相应的Common
对象作为方法上的参数,我认为这不是一个好的解决方案。
有什么方法可以解决这种情况吗?
答案 0 :(得分:1)
您可能在Common
中有一个缓存指令,其他模块将能够导入和修改。
这是一个简短的字符串示例:
Common.py
CACHE = {'logger': None}
def func():
print(CACHE['logger'])
ModuleA.py
from Common import CACHE, func
CACHE['logger'] = 'mod a'
func()
#mod a
ModuleB.py
from Common import CACHE, func
CACHE['logger'] = 'mod b'
func()
#mod b
如果使用dict感到有些混乱,我认为您可以创建一个类来处理所需的特定位,它只需要就地更新而不是设置新值。