我有各种各样的模块文件,并希望与每个模块共享一个公共对象(在本例中是logger
)。最好的方法是什么?我有一个解决办法,但感觉不太对劲。你知道吗
在伪代码中:
module_1.py
global logger
# module_1
def pass_logger_module1(plogger):
global logger
logger = plogger
module_2.py
global logger
# module_2
def pass_logger_module2(plogger):
global logger
logger = plogger
main_module.py
from module_1 import pass_logger_module1
from module_2 import pass_logger_module2
logger = set_logger(logfile, logformat, 'DEBUG')
pass_logger_module1(logger)
pass_logger_module2(logger)
首先,在
custom_logger.py
中定义自定义记录器然后,在其他模块中,导入
CustomLogger
。你知道吗一种方法是通过第三个模块公开共享对象,如下所示:
我的_记录器.py你知道吗
模块1.py
模块2.py
然后,您的主模块可以同时导入模块\u 1和模块\u 2,而不必了解记录器,并避免循环导入情况。你知道吗
正如在注释中指出的,这不是使用
logging
模块的方法。你知道吗不过,对于“不同模块文件的公共对象”有一个更一般的答案 与你的例子相反,意思是:
main_module.py
module_1.py
module_2.py
编辑: 为了避免循环导入,可以将
logger
存储在不同的模块中:settings.py
main_module.py
相关问题 更多 >
编程相关推荐