收藏
回答

【minium】app.call_wx_method()调用时的args参数类型应该是list吧?

在手册中对call_wx_method()的参数介绍(https://minitest.weixin.qq.com/#/minium/Python/api/App?id=call_wx_method)中,args应该是dict。

但是我查看minium源码,在`*\minium\miniprogram\base_driver\minium_object.py`中有:

def _call_wx_method(self, method, args=None, plugin_appid=None, sync=True):
    if args is None:
        args = []
    if not isinstance(args, list):
        if isinstance(args, str):
            # 如果是字符型参数,就可以不用管是否是 sync 方法,直接转数组传参即可
            args = [args]
        elif "Sync" in method:
            # 如果是 sync 方法,则需要从字典里面提取所有的 value 成为一个数组进行传参
            if isinstance(args, dict):
                temp_args = list()
                for key in args.keys():
                    temp_args.append(args[key])
                args = temp_args
        else:
            # 异步方法的话无需管 args 是str 还是 dict,直接转成 list 即可
            args = [args]

    params = {"method": method, "args": args}
    if plugin_appid:
        params["pluginId"] = plugin_appid
    if not sync:
        return self.connection.send_async("App.callWxMethod", params)
    return self.connection.send("App.callWxMethod", params)


发现最终args参数都是以list格式传入connection,而且如果按照手册中的要求传入dict,那异步方法的参数传入connection就成了套着list的dict,比如[{"number":123,"string":"abc"}]。

请问这样minium能正常处理吗?或者如果我一开始传入call_wx_method()的参数就按照list传入可以吗?

回答关注问题邀请回答
收藏

1 个回答

  • yopofeng
    yopofeng
    2023-01-06

    可以的

    2023-01-06
    有用 1
    回复
登录 后发表内容