python – Pylint – “使用全局语句”

我正在努力研究当前的python程序是否非常清楚pylint警告,所以当我意识到我可以简单地关闭警告时,我想确保在我做之前没有更理想的解决方案.

我当前的代码部分是我的日志代码.我有一个函数init(),用于设置处理程序并将它们附加到根记录器,以及一个函数set_console_level(level),用于设置报告控制台消息的级别(DEBUG,INFO等):

_CONSOLE_OUT = NONE

def init():
    """Set up the error handlers for the root logger"""
    console_out = logging.StreamHandler()
    console_out.setLevel(logging.INFO)  #Show info messages for now
    #...
    logging.root.addHandler(console_out)
    global _CONSOLE_OUT
    _CONSOLE_OUT = console_out

    #Rest of function sets up more handlers similarly
init()

def set_console_level(level):
    """Change the level at which console messages are printed"""
    assert __CONSOLE_OUT is not None #Set in init
    _CONSOLE_OUT.setLevel(level) 

从我的阅读中可以看出,这是实现这一目标的方法.需要行全局_CONSOLE_OUT才能写入模块级变量.但是,当我在这个文件上运行pylint时,我收到警告W:15,4:init:使用全局语句.有没有办法避免这种警告?解决这个问题的更好方法是什么?

(请不要说全局_CONSOLE_OUT #pylint:disable = W ****而不给出理由)

解决方法:

您可以在导入时创建它:

_console_out = ConsoleHandler()

其中ConsoleHandler是工厂函数,或者是创建和设置处理程序的类.

上一篇:java泛型和SuppressWarnings


下一篇:MyBatis----逆向工程