Python 调用记录。获取基类名称

标签 python

我有一个 Python 源代码:

import inspect  
import logging  

logging.basicConfig(level=logging.DEBUG)  

class base_class:  
    def base_method(self):  
      logging.debug("  %s:%s() {" % (self.__class__.__name__, (inspect.stack()[0][3])))
      # . . .
      logging.debug("  } // %s:%s()" % (self.__class__.__name__, (inspect.stack()[0][3])))

class derived_class(base_class):
  def derived_method(self):
    logging.debug("%s:%s()." % (self.__class__.__name__, (inspect.stack()[0][3])))
    self.base_method()
    logging.debug("} // %s:%s()" % (self.__class__.__name__, (inspect.stack()[0][3])))

derived_class().derived_method()

它打印:

DEBUG:root:derived_class:derived_method().
DEBUG:root:  derived_class:base_method() {
DEBUG:root:  } // derived_class:base_method()
DEBUG:root:} // derived_class:derived_method()

我要:

DEBUG:root:derived_class:derived_method().
DEBUG:root:  base_class:base_method() {
DEBUG:root:  } // base_class:base_method()
DEBUG:root:} // derived_class:derived_method()

这可能吗? 我在几个小时内都没有找到答案。

最佳答案

你为什么这样做是可分割的,但我认为你最好的选择是手动指定类名

class base_class(object):  
    def base_method(self):  
      logging.debug("  %s:%s() {" % ( base_class.__name__, (inspect.stack()[0][3])))
      # . . .
      logging.debug("  } // %s:%s()" % (base_class.__name__, (inspect.stack()[0][3])))

class derived_class(base_class):
  def derived_method(self):

      logging.debug("%s:%s()." % ( derived_class.__name__, (inspect.stack()[0][3])))
      self.base_method()
      logging.debug("} // %s:%s()" % ( derived_class.__name__, (inspect.stack()[0][3])))

关于Python 调用记录。获取基类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362872/

相关文章:

python - 正则表达式如何处理正则表达式模式中间的 `^` 或 `$`?

python - "Generate"客户端使用Django restful API

python - 如何停止等待客户端.connect() 的线程?

python - Django:以表单保存多对多

android - 为什么Python运行ant build失败?

python - 全局名称 'sqrt' 未定义

python - HackerRank 为所有隐藏测试用例提供 'Wrong Answer'

python - 如何将每个子目录中的文件名收集在单独的列表中

python - 迭代器的写权限?或者 : sending values to generators of numpy Arrays

python - 交叉两个字典