我有一个 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/