使用另一个模块中的特定方法扩展类

时间:2018-05-25 17:43:26

标签: python python-3.x

我正在尝试扩展我的自定义课程'测试'有一些输出函数包含在' 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}

0 个答案:

没有答案