如何使本机函数在 python 中的自定义 class 上可见

How to make the native functions visible on a custom class in python

我是编程新手,已经开始学习 classes。根据我的要求,我写了一个自定义日志记录 class 并且我正在尝试使日志记录模块的本机功能从同一文件上的另一个 class 可见。当我在 customLogger 中打印 dir(res) 时,它列出了日志记录模块的所有本机函数。 (作为示例信息())但是当我尝试从另一个函数获取 class 对象时,本机函数不可见。

我写的代码是:

class customLogger():
    def __init__(self, logLevel = logging.DEBUG):
        self.logLevel = logLevel
        res = self.custLog(self.logLevel)
        print(dir(res) >>>> here the info() method is visible.
    
    def custLog(self, logLevel):
        logger_name = inspect.stack()[1][3]
        logger = logging.getLogger(logger_name)
        logger.setLevel(self.logLevel)
        fh = logging.FileHandler("iperf.log", mode='w')
        formatter = fh.setFormatter('%(asctime)s - %(levelname)s - %(name)s : %(message)s')
        fh.setFormatter(formatter)
        logger.addHandler(fh)
        return logger
class iperf3():
    def __init__(self, server_ip):
        #Creationg the Logger
        log = customLogger(). >>>> here the info() method is not visible. can't i call the logging module functions from this class?
        print(f'The Value of log is : {log}')
        print(f'dir(log) is : {dir(log)}')

如果这是您的整个 class,您可以将其替换为采用日志级别的单个函数和 returns 您想要的 Logger 实例。

def make_logger(level):
    logger_name = inspect.stack()[1][3]
    logger = logging.getLogger(logger_name)
    logger.setLevel(level)
    fh = logging.FileHandler("iperf.log", mode='w')
    formatter = fh.setFormatter('%(asctime)s - %(levelname)s - %(name)s : %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)
    return logger