python - 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 方式是什么?
解决方案
更改get_user()
函数的返回类型以typing.Optional[User]
解决问题。
pylint 正在抱怨,因为仅根据类型提示,user
它可能是 value True
,并且True.name
会引发异常。pylint 不评估代码路径(它不知道是否get_user()
只返回False
,而不是True
;它只知道它应该返回一个布尔值。)
推荐阅读
- c++ - QWidget 的内阴影效果
- json - 一个字符串中的Json多个数组
- javascript - 在 javascript 中使用 switch(true) 来处理数字范围不起作用的情况?
- python - 我的 if 语句没有延续到最终输出。一个更改了字符串,而其他的则没有,但似乎应该这样做。我怎样才能解决这个问题?
- javascript - 在 VueJS 问题中单击锚标记时将文本复制到剪贴板
- java - 如何将“如果存在跳过”方法添加到 SQLiteOpenHelper 类?
- pycharm - Pyproj 转换输出在 Pycharm 控制台和终端之间不同
- javascript - 如何在 sublime text 3 中已经存在的 .js 文件中将扩展名转换为 .mjs?
- arrays - 无法在 sveltekit 循环中从 JSON 对象中获取值
- python - Python中线图上的自定义调色板