微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mypy:“Optional[Mapping[Any, Any]]”类型的值不可索引

如何解决mypy:“Optional[Mapping[Any, Any]]”类型的值不可索引

为什么 mypyfetch_one 库的 databases 方法返回的值不可索引?在这种情况下,我应该怎么做才能解决错误

async def get_reaction_by_name(name: str,user_id: str) -> Optional[Mapping[Any,Any]]:
    query = reactions.select().where(
        (reactions.c.name == name) & (reactions.c.user_id == user_id)
    )
    return await database.fetch_one(query)

...

reaction = await get_reaction_by_name(name=name,user_id=user_id)
reaction["name"]

# mypy: Value of type "Optional[Mapping[Any,Any]]" is not indexable

解决方法

mypy 告诉我们的是,由于函数在将其结果视为 Optional[...](给定代码段中的 ...)之前返回 Mapping[Any,Any] 我们应该检查它是否不是 None喜欢

reaction = await get_reaction_by_name(name=name,user_id=user_id)
if reaction is not None:
    reaction["name"]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。