Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中self如何在类中工作_Python - Fatal编程技术网

在python中self如何在类中工作

在python中self如何在类中工作,python,Python,我需要以下代码的帮助: import logging class TestLoggin: def __init__(self): # Create the Logger self.logger = logging.getLogger(__name__) self.logger.setLevel(logging.DEBUG) # Create the Handler for logging data to a file

我需要以下代码的帮助:

import logging

class TestLoggin:

    def __init__(self):
        # Create the Logger
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(logging.DEBUG)

        # Create the Handler for logging data to a file
        logger_handler = logging.FileHandler('output.log')
        logger_handler.setLevel(logging.DEBUG)

        # Create a Formatter for formatting the log messages
        logger_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',  datefmt='%d-%m-%Y %H:%M:%S')

        # Add the Formatter to the Handler
        logger_handler.setFormatter(logger_formatter)

        # Add the Handler to the Logger
        self.logger.addHandler(logger_handler)
当设置在
\uuuu init\uuu
方法内时,日志记录模块工作正常。但如果我尝试将其删除为新方法,如下所示:

import logging

class TestLoggin:

    def __init__(self):
        self.logger = self.setup_logger(output_path)

    def example_using_logger(self):
        self.logger.error('it will raise an error')    

    def setup_logger(self, output_path):
        # Create the Logger
        logger = logging.getLogger(__name__)
        logger.setLevel(logging.DEBUG)

        # Create the Handler for logging data to a file
        logger_handler = logging.FileHandler(output_path)
        logger_handler.setLevel(logging.DEBUG)

        # Create a Formatter for formatting the log messages
        logger_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',  datefmt='%d-%m-%Y %H:%M:%S')

        # Add the Formatter to the Handler
        logger_handler.setFormatter(logger_formatter)

        # Add the Handler to the Logger
        return logger.addHandler(logger_handler)
并尝试使用logger模块
self.logger.error('它将引发错误')
,我得到以下错误:
AttributeError:'NoneType'对象没有属性'error'

我知道引发的错误是因为
logger
未被识别为模块的一部分,而只是一个新变量。那是因为我没有掌握自我的基本原理。我是Python新手,所以这里需要一些帮助:如何解决这个问题,以及问题的原因。最后一个将帮助我更多地了解
自我


提前谢谢

问题在于logger.addHandler()没有返回任何内容,因此您将不向self.logger分配任何内容(从logger.addHandler()返回)

试试这个:

# Add the Handler to the Logger
logger.addHandler(logger_handler)
return logger

这与自我无关
logger.addHandler
不返回任何内容,因此无法从安装方法返回结果。只需将logger.into setup\u logger返回addHandler的结果,而不是logger istance,因此会得到属性错误。
返回logger
,而不是
logger.addHandler(logger\u handler)
<代码> Logg.AdHuffLeLeR()<代码>不返回任何内容,并考虑使用<代码> @ StActudioTys>代码>