gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:53 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com