在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>代码>