首页 > 解决方案 > Pylint 类型混淆

问题描述

user = get_user() # returns object of type User or False
if not user:
  raise HTTPException()
print(user.name) # pylint error: Instance of 'bool' has no 'name' member

目标:摆脱最后一行的pylint错误。

我尝试使用 Union[bool, User] 返回类型,get_user()但这并没有解决问题。

将类型从 bool 转换为 User 的 pythonic 方式是什么?

标签: pythonpylint

解决方案


更改get_user()函数的返回类型以typing.Optional[User]解决问题。

pylint 正在抱怨,因为仅根据类型提示,user它可能是 value True,并且True.name会引发异常。pylint 不评估代码路径(它不知道是否get_user()只返回False,而不是True;它只知道它应该返回一个布尔值。)


推荐阅读