如何使本机函数在 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
我是编程新手,已经开始学习 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