mypy: "Optional[Mapping[Any, Any]]" 类型的值不可索引
mypy: Value of type "Optional[Mapping[Any, Any]]" is not indexable
为什么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
mypy 告诉我们的是,由于函数 returns Optional[...]
在将其结果视为 ...
(给定代码段中的 Mapping[Any, Any]
)之前,我们应该检查它是否不是None
个赞
reaction = await get_reaction_by_name(name=name, user_id=user_id)
if reaction is not None:
reaction["name"]
为什么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
mypy 告诉我们的是,由于函数 returns Optional[...]
在将其结果视为 ...
(给定代码段中的 Mapping[Any, Any]
)之前,我们应该检查它是否不是None
个赞
reaction = await get_reaction_by_name(name=name, user_id=user_id)
if reaction is not None:
reaction["name"]