获取继承方法中的函数名称

问题描述

我正在使用以下代码

import time
import logging
import os
root = logging.getLogger()
root.setLevel(os.environ.get("LOGLEVEL","DEBUG"))

def timed(func):
    """This decorator prints the execution time for the decorated function."""
    def wrapper_class():
        def wrapper(*args,**kwargs):
            start = time.time()
            result = func(*args,**kwargs)
            end = time.time()
            logging.debug("{} ran in {}s".format(func.__qualname__,round(end - start,2)))
            return result
        return wrapper
    return wrapper_class()

class AClass:
    @timed
    def __call__(self,*args):
        return self.run(*args)

class BClass(AClass):
    def run(self,*args):
        # Does things
        return "Done"
BClass().__call__()

记录时间时,我期望的是类似

DEBUG:root:BClass.__call__ ran in 26.22s

但是我得到了:

DEBUG:root:AClass.__call__ ran in 26.22s

我有多个继承自AClass的类,我想知道哪个正在运行。如何修改包装器以显示继承的类的名称

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)