迭代 python 请求响应时出现类型检查错误:“len”具有不兼容的类型“Optional[Any]”;预期“大小”[arg-type]

问题描述 投票:0回答:1

我正在使用 python 中的请求模块,我需要迭代从请求收到的响应。

这是我的

send_request
功能:

self.query = {"cql": f"type=page and label='{label}'"}

            self.response = requests.request(
                "GET",
                self.rest_url,
                auth=BearerAuth(self._token),
                params=self.query,
                timeout=100,
            )

            return self.response.json()

以及以下

get_page_details
函数迭代响应

def get_page_details(self) -> dict:
        """Iterate through JSON response to get necessary page details."""

        for label in labels:
            self.json_response = self.send_request(label)
            results_list=self.json_response.get("results")
            
            # Get page ids from JSON result
            page_ids = []
            for i in range(0, len(results_list)):
                page_ids.append(results_list[i]["content"]["id"])

            if page_ids:
                self.page_details[label] = page_ids

            else:
                continue

        return self.page_details

类型检查错误::

错误1:“len”的参数1具有不兼容的类型“Optional[Any]”;预期“大小”[arg-type] 对于范围内的 i(0,len(结果列表)):

错误2:“Optional[Any]”类型的值不可索引[index] page_ids.append(results_list[i]["content"]["id"])

这些错误是什么意思?

python python-requests mypy typing
1个回答
0
投票

您应该下载

PEP 561
请求包的类型存根包并使用它(而不是尝试为其添加自己的类型)。

这假设您使用

urllib
requests
包的时间足够晚,以便由 typeshed 机器生成和支持。

© www.soinside.com 2019 - 2024. All rights reserved.