有没有一种方法可以将自定义函数作为类方法中的参数传递,并让对象调用该函数?我正在编写一个自定义记录器,并希望执行类似的操作
class Logger:
def __init__(self, ...):
self.logger = logging.getLogger('name')
...
def write(self, writeFunction, message):
self.logger.writeFunction(message) # something like this
self.logger.call(writeFunction, args=[message]) # or something like this in other languages
其中writeFunction
类似于info()
、debug()
等等(我知道上面的例子在python中是不允许的)
尽量避免将日志级别作为参数传递,并执行一系列if语句来确定要调用哪个日志函数
更新:我发现日志记录器有一个方法log()
,它完成了我所寻找的,但是一般来说其他对象呢
是的,您完全可以将callable作为参数传递。它看起来更像这样(添加类型注释以帮助澄清用法):
然后要调用此函数,您需要执行以下操作:
write
函数将只调用作为参数传递的任何函数(在本例中为self.logger.info
),并使用给定的message
。在这里添加类型注释很有用,因为很容易混淆在哪个上下文中需要什么类型,但是mypy将帮助您保持通畅。在这种情况下,类型注释告诉我们传递给write
的任何函数都将使用单个str
参数调用相关问题 更多 >
编程相关推荐