我写了一个如下所示的类:
class Logger:
@staticmethod
def get_timestamp():
import datetime
return datetime.datetime.utcnow()
def print_log(self,color, write_level, msg):
return color
def log_level_print(self,log_level, write_level, msg):
if log_level == 'ERROR':
return print_log(bcolors.FAIL, write_level, msg)
if log_level == 'WARN':
return print_log(bcolors.WARNING, write_level, msg)
if log_level == 'INFO':
return print_log(bcolors.OKGREEN, write_level, msg)
if log_level == 'DEBUG':
return print_log(bcolors.OKBLUE, write_level, msg)
else:
print(f"{Logger.get_timestamp()} {bcolors.FAIL}: Invalid LOG type{bcolors.ENDC}")
return
Run Code Online (Sandbox Code Playgroud)
在这里,我正在使用这个类:
from logger import Logger
demo = Logger()
print(demo.log_level_print('ERROR','ssdsd','sdsdsd'))
Run Code Online (Sandbox Code Playgroud)
我无法调用此函数,出现错误:
NameError: name 'print_log' is not defined
您忘记添加self为类方法的第一个参数以及使用方法时的第一个参数。更正的代码:
class Logger:
@staticmethod
def get_timestamp():
import datetime
return datetime.datetime.utcnow()
def print_log(self, color, write_level, msg):
return color
def log_level_print(self, log_level, write_level, msg):
if log_level == 'ERROR':
return self.print_log(bcolors.FAIL, write_level, msg)
if log_level == 'WARN':
return self.print_log(bcolors.WARNING, write_level, msg)
if log_level == 'INFO':
return self.print_log(bcolors.OKGREEN, write_level, msg)
if log_level == 'DEBUG':
return self.print_log(bcolors.OKBLUE, write_level, msg)
else:
print(f"{Logger.get_timestamp()} {bcolors.FAIL}: Invalid LOG type{bcolors.ENDC}")
return
Run Code Online (Sandbox Code Playgroud)
看,这是我正在运行的代码:
demo = Logger()
print(demo.log_level_print('ERROR','ssdsd','sdsdsd'))
Run Code Online (Sandbox Code Playgroud)
这是结果:

| 归档时间: |
|
| 查看次数: |
3788 次 |
| 最近记录: |