【发布时间】:2021-06-14 11:24:47
【问题描述】:
为什么mypy 说databases 库的fetch_one 方法返回的值不可索引?在这种情况下我应该怎么做才能解决这个错误?
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
【问题讨论】:
-
database.fetch_one函数的签名是什么? -
也因为它是
Optionalmypy 说您可能应该检查返回的值是否不是None,然后再将其视为Mapping -
类似
if reaction is not None: reaction["name"] -
检查
None有帮助!请添加答案,我会接受。
标签: python python-3.x type-hinting mypy