Closed NOBB2333 closed 5 months ago
我没太看明白你后面发的那一段话,如果只是为了回调函数可以指定任意个参数的话,实现很简单:你可以修改OcrManager
类的__init__
方法,增加**kwargs
。然后方法里加一行self.kwargs = kwargs
接着在self.m_usr_callback(pic_path, self.parse_json_response(json_response_str))
改成self.m_usr_callback(pic_path, self.parse_json_response(json_response_str), **self.kwargs)
另外如果你只是不想定义全局变量的话,也不想修改源码的话,可以使用闭包的形式来定义回调函数:
def ocr_result_callback_pack(*args, **kwargs):
def _ocr_result_callback(img_path:str, result_json:str):
print(img_path, result_json)
print(args)
print(kwargs)
return _ocr_result_callback
ocr_result_callback = ocr_result_callback_pack("aaaaaaaa", a=1, b=2)
ocr_result_callback就是需要的回调函数,"aaaaaaaa", a=1, b=2
则是你原先需要定义成全局变量的变量
不好意思,我的表述可能不是很精准,我想表述的问题是:
回调函数在外部输入,但是传参是在源码中传参,这就限制了回调函数的输入传参只有 img_path:str, result_json:str,
这样似乎设计不太合理🤣
您这个闭包/装饰器传参确实可以解决这个问题,也是解决方案,理解了
不,这样设计才合理。不然你猜它为什么叫回调函数,就是要限制我给什么,你拿什么。而不是你要什么我给什么。
哈哈哈哈,理解了
下面这段代码中
ocr_result_callback
似乎没有办法设置 传参数量,默认一个img_path
一个result_json
没找到在哪改找到
self.m_usr_callback(pic_path, self.parse_json_response(json_response_str))
改为 在初始化时候传参,不是源码里传参 能否改为def test_kwargs(first, *args, **kwargs):
这样类型 目前个人是使用,**kwargs
但是还是不能传参,能否增加返回值的功能,就可以不使用全局变量来保存了