我正在尝试扩展我的自定义课程'测试'有一些输出函数包含在' logging'模块。我有一个名为' print'的自定义日志记录级别。这引起了我的问题。我尝试了多种方法,每种方法都有一些缺点。有没有其他方法可以更好,我错过了。
我希望能够在对象上使用vars(),而只打印出不是记录方法的属性。
此方法有效,但打印出' print'方法(我不想要)
#Test.py
logger = logging.getLogger('console')
class Test:
def __init__(self):
self._some_obj = True
self.print= logger.print
#main.py
vars(Test()) # Prints {'_some_obj':True,'print': <bound method Logger.printof <Logger console (PRINT)>>}
此方法只能正确打印出正确的属性,但会覆盖过程中的默认打印
#Test.py
logger = logging.getLogger('console')
class Test:
print = logger.print # Overwrites default print
def __init__(self):
self._some_obj = True
#main.py
vars(Test()) # Prints {'_some_obj':True}
这种方法也有效,但看起来并不像是pythonic。由于我将对很多函数执行此操作,因此会占用大量空间,并且我也遇到了通过可选参数的问题
#Test.py
logger = logging.getLogger('console')
class Test:
def __init__(self):
self._some_obj = True
def print(msg):
logger.print(msg)
#main.py
vars(Test()) # Prints {'_some_obj':True}